コード例 #1
0
ファイル: teste.c プロジェクト: memphis47/RenatoGrafos-2
int main(void) {

  grafo g = le_grafo(stdin);

  long int d = diametro(g);

  printf("%s\n", nome(g));

  printf("%sdirecionado\n", direcionado(g) ? "" : "não ");

  if ( direcionado(g) )
    
    printf("%sfortemente conexo\n", fortemente_conexo(g) ? "" : "não ");
  
  else
    
    printf("%sconexo\n", conexo(g) ? "" : "des");
  
  if ( d == infinito )

    printf("diâmetro: oo\n");

  else

    printf("diâmetro: %ld\n", d);

  destroi_grafo(escreve_grafo(stdout, distancias(g)));

  printf("\n");

    return ! destroi_grafo(g);
}
コード例 #2
0
ファイル: grafo.c プロジェクト: gvs11/BCC
//------------------------------------------------------------------------------
long int diametro(grafo g) {
    long int diam;
    aresta_t a;
    vertice v;

    g = distancias(g);

    if (!g) {
        return -1;
    }

    diam = 0;
    for (v = g->vertice; v; v = v->next) {
        for (a = v->aresta; a; a = a->next) {
            if (a->peso > diam) {
                diam = a->peso;
            }
        }
    }

    return diam;
}
コード例 #3
0
ファイル: main.c プロジェクト: rafaelravedutti/graphs3
//------------------------------------------------------------------------------
int main(void) {
  struct grafo *g, *d, *c;
  struct vertice *v;
  struct no *n;
  lista l;

  g = le_grafo(stdin);
  escreve_grafo(stdout, g);

  if((l = ordena(g)) != NULL) {
    for(n = primeiro_no(l); n != NULL; n = proximo_no(n)) {
      v = (struct vertice *) conteudo(n);
      fprintf(stdout, "%s\n", nome_vertice(v));
    }

    destroi_lista(l, nao_destroi_nos);
  }

  if((l = componentes(g)) != NULL) {
    for(n = primeiro_no(l); n != NULL; n = proximo_no(n)) {
      c = (struct grafo *) conteudo(n);
      escreve_grafo(stdout, c);
    }

    destroi_lista(l, destroi_grafo);
  }

  d = arvore_geradora_minima(g);
  if(d != NULL) {
    escreve_grafo(stdout, d);
    destroi_grafo(d);
  }


  /*
  d = arborescencia_caminhos_minimos(g, v);
  if(d != NULL) {
    escreve_grafo(stdout, d);
    destroi_grafo(d);
  }
  */

  d = distancias(g);
  if(d != NULL) {
    escreve_grafo(stdout, d);
    destroi_grafo(d);
  }

  fprintf(stdout, "Diametro = %ld\n", diametro(g));

  if(conexo(g)) {
    fprintf(stdout, "Conexo!\n");
  } else {
    fprintf(stdout, "Não é conexo!\n");
  }

  if(fortemente_conexo(g)) {
    fprintf(stdout, "Fortemente conexo!\n");
  } else {
    fprintf(stdout, "Não é fortemente conexo!\n");
  }

  /*if((l_blocos = blocos(g)) != NULL) {
    fprintf(stderr, "\n--Blocos criados:\n" );
    for(n = primeiro_no(l); n != NULL; n = proximo_no(n)) {
      c = (struct grafo *) conteudo(n);
      escreve_grafo(stdout, c);
    }

    destroi_lista(l_blocos, destroi_grafo);
  }*/

  destroi_grafo(g);
  return 0;
}