Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- g->Vet[v1].final->prox = (celula*)malloc (sizeof(celula));
- g->Vet[v1].final = g->Vet[v1].final->prox;
- g->Vet[v1].final->Item = aux;
- g->Vet[v1].final->prox = NULL;
- g->NumArestas++;
- }
- printf (" Ligacao: %d Peso: %d Chave %d", aux->Item.Vertice, aux->Item.Peso, aux->Item.Chave_Busca);
- aux = aux->prox;
- }
- }
- printf ("n");
- }
- (*tempo)++;
- d[i] = (*tempo);
- //função empilhar
- printf ("Vertice: %2d Tempo de descoberta: %2d Cinzan", i, d[i]);
- inserir_pilha(i, &pilha);
- printf ("Funcao Inserir: %dn", i);
- if (!Lista_Adj_Vazia(&i, g) && aux->Item.Vertice != bus){
- aux = Primeiro_Lista_Adj(&i, g);
- while (!FimLista){
- Prox_Adj(&i, &v, &peso, &aux, &FimLista);
- if (Cor[v] == branco){
- antecessor [v] = i;
- Visita_Dfs(v, g,tempo, d, t, Cor, antecessor, bus);
- printf ("Retorna para o vertice anterior %dn", i);
- }
- }
- printf ("nnEncontrounn");
- imprime_pilha(&pilha);
- Copia(&pilha);
- imprime_pilha (&teste);
- Cor[i] = preto;
- (*tempo)++;
- t[i] = (*tempo);
- // aqui deve desempilhar
- printf ("Vertice: %2d Tempo de termino: %2d Preton", i, t[i]);
- printf ("Funcao Remover %dn", i);
- remover_pilha(&pilha);
- printf ("Tamanho atual da pilha: %dn", tamanho(&pilha));
- cores Cor[MaxNumVert+1];
- tempo =0;
- printf ("Informe o peso que deseja buscar: ");
- scanf ("%d",&bus);
- for (i=0; i<=g->NumVertices-1; i++){
- Cor[i] = branco;
- antecessor[i] = -1;
- }
- for (i=0; i<=g->NumVertices-1; i++){
- //chama a função Visita DFS
- if (Cor[i] == branco){
- Visita_Dfs(i, g, &tempo, d, t, Cor, antecessor, bus);
- }
- }
- grafo Grafo;
- menu:
- printf ("<1> Inserir Aresta no Grafon");
- printf ("<2> Remover Aresta no Grafon");
- printf ("<3> Verificar a Existencia de Uma Arestan");
- printf ("<4> Imprimir Grafon");
- printf ("<5> Realizar Busca em Profundidaden");
- printf ("<7> Obter Caminho de buscan");
- printf ("<6> Destruir Grafon");
- printf ("<0> Sairn");
- printf ("Informe Uma Opcao: ");
- scanf ("%d", &op);
- printf ("n");
- switch (op){
- case 1:{
- printf ("Informe o vertice 1: ");
- scanf ("%d", &v1);
- printf ("informe o Vertice 2: ");
- scanf ("%d", &v2);
- printf ("Informe o Peso: ");
- scanf ("%d", &peso);
- printf ("Informe a chave de busca dessa ligação: ");
- scanf ("%d", &Enc);
- Insere_Aresta(v1, v2, peso, Enc, &Grafo);
- if (dir == 2){
- Insere_Aresta(v2, v1, peso, Enc, &Grafo);
- }
- printf ("nAresta Adicionada com Sucesso!n");
- getch ();
- system ("CLS");
- goto menu;
- }
- case 2:{
- //Chamada da funcao Retira_Aresta(int v1, int v2, int peso, grafo *g)
- printf ("Informe o Primeiro Vertice que Deseja Remover a Ligacao: ");
- scanf ("%d", &v1);
- printf ("Informe o Primeiro Vertice que Deseja Remover a Ligacao: ");
- scanf ("%d", &v2);
- printf ("Realmente deseja Remover? <1> Sim <2> Nao: ");
- scanf ("%d", &peso);
- if (peso == 1 ){
- Retira_Aresta(v1, v2,&Grafo );
- if (dir == 2){
- Retira_Aresta(v2, v1,&Grafo );
- }
- }
- printf ("n");
- printf("Aresta Removida com Sucesso!n");
- getch();
- system ("CLS");
- goto menu;
- }
- case 3:{
- printf ("Informe o Primeiro Vertice que Deseja Verificar: ");
- scanf ("%d", &v1);
- printf ("Informe o Segundo Vertice que Deseja Verificar: ");
- scanf ("%d", &v2);
- Enc = Existe_Aresta(v1, v2, &Grafo);
- if (Enc == 1){
- printf ("Existe Aresta Entre os Verticesn");
- }else{
- printf ("Nao Existe Aresta Entre os Verticesn");
- }
- getch();
- system ("CLS");
- goto menu;
- }
- case 4:{
- printf ("n");
- Imprime_Grafo(&Grafo);
- getch ();
- system("CLS");
- goto menu;
- }
- case 5:{
- getch();
- system ("CLS");
- goto menu;
- }
- case 6:{
- Libera_Grafo(&Grafo);
- printf ("Memoria do Grafo Limpan");
- getch();
- system ("CLS");
- break;
- }
- case 7:{
- printf("Tamanho de Pilha %dn", teste.tamanho);
- imprime_pilha(&teste);
- getch();
- system ("CLS");
- goto menu;
- }
- case 0:{
- break;
- }
- default :{
- printf ("Informe uma opcao validan");
- getch ();
- system ("CLS");
- goto menu;
- }
- }
- return 0;
Add Comment
Please, Sign In to add comment