int main() {
 //system("title Aluno: Carlos Alberto Costa de Oliveira Júnior");
 //system("color 0a");
 setlocale(LC_ALL, "");
 int num = 0; // Declaração do número de opções que o usuário vai inserir para entrar no menu

 do {
    printf("   ╔═══════════════ Operações em Grafos ════════════════╗\n");
    printf("   ║                                                    ║\n");
    printf("   ║ 1-  Encontrar caminho mais curto                   ║\n");
    printf("   ║ 2-  Calcular numero de componentes conexos         ║\n");
    printf("   ║ 3-  Encontrar caminho mais curto entre 2 vertices  ║\n");
    printf("   ║ 4-  Encontrar Árvore geradora minima               ║\n");
    printf("   ║ 5-  Sair                                           ║\n");
    printf("   ║                                                    ║\n");
    printf("   ╚════════════════════════════════════════════════════╝");

    do {
        printf("\n Digite um número da lista:");
        fflush(stdin);
        scanf("%i", &num);
        fflush(stdin);
        switch (num) {
            case 1:
                limpartela();
                caminho_curto();
                break;
            case 2:
                limpartela();
                calcular_componentes();
                break;
            case 3:
                limpartela();
                caminho_mais_curto();
                break;
            case 4:
                limpartela();
                arvore_geradora_minima();
                break;
            case 5:
                break;
            }
    }while (num < 1 || num > 5);
 }while (num != 5);
 limpartela();
 printf("\n FIM DE EXECUCAO");
 return 0;
}
Exemple #2
0
//------------------------------------------------------------------------------
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;
}