void main() { Tipo_Grafo *grafo; int tamanho = tam_arquivo("tspfase8.txt"); grafo = cria_grafo(tamanho); ler_arquivo("tspfase8.txt", grafo, tamanho); termina_grafo(grafo, tamanho); }
grafo le_grafo(FILE *input){ if (!input) return NULL; Agraph_t *Ag = agread(input, NULL); if(!Ag) return NULL; grafo g = cria_grafo(agnameof(Ag), agisdirected(Ag), contem_pesos(Ag), agnnodes(Ag)); for (Agnode_t *Av=agfstnode(Ag); Av; Av=agnxtnode(Ag,Av)) { cria_vertice(g, agnameof(Av)); } for (Agnode_t *Av=agfstnode(Ag); Av; Av=agnxtnode(Ag,Av)) { for (Agedge_t *Ae=agfstout(Ag,Av); Ae; Ae=agnxtout(Ag,Ae)) { vertice u = v_busca(g, agnameof(agtail(Ae))); vertice v = v_busca(g, agnameof(aghead(Ae))); cria_vizinhanca(g, u, v, get_peso(Ae)); } } agclose(Ag); agfree(Ag, NULL); return g; }
int main(){ char labirinto[Lin][Col]; int s; int x, y; Grafo *cria_grafo(int nro_vertices, int grau_max); Grafo *gro; gro = cria_grafo(10, 7); insereAresta(gr, 0, 1); insereAresta(gr, 1, 3); removeAresta(gr, 0, 1); Grafo* gr = cria_grafo(5, 5); insereAresta(gr, 0, 1); insereAresta(gr, 1, 3); insereAresta(gr, 1, 2); insereAresta(gr, 2, 4); insereAresta(gr, 3, 0); insereAresta(gr, 3, 4); insereAresta(gr, 4, 1); int vis[5]; /* CriarLabirinto(); s = 1+rand() % Lin-2; Rota(s, 1); labirinto[s][1] = 'T'; //inicio do caminho Imprimir(); x=s; y=1;*/ print_grafo(gr); buscaProfundidade_Grafo(gr, 0, vis); libera_Grafo(gr); return 0; }
grafo copia_grafo(grafo g){ if(!g) return NULL; grafo copy = cria_grafo(g->nome, g->direcionado, g->ponderado, (int)g->n_vertices); if(copy == NULL){ printf("Sem memoria para alocar.\n"); }else{ copy->n_vertices = g->n_vertices; copy->n_arestas = g->n_arestas; for(unsigned int i = 0; i < g->n_vertices; i++){ copy->vertices[i] = g->vertices[i]; } } return copy; free(copy); }
int main(int argc, char *argv[]){ int op, vertice_inicial, vertice_final, i, qtd_v; printf("1 - BUSCA EM LARGURA\n"); printf("2 - BUSCA EM PROFUNDIDADE\n"); printf("3 - SAIR\n"); scanf("%d", &op); if(op == 3) return 0; Vetor *grafo; grafo = cria_grafo(); printf("alou mulheres\n"); qtd_v = qtd_vertices(); printf("INFORME O VERTICE INICIAL DA BUSCA\n"); scanf("%d", &vertice_inicial); printf("INFORME O VETICE FINAL DA BUSCA\n"); scanf("%d", &vertice_final); if(op == 1){ busca_largura(grafo, vertice_inicial, vertice_final, qtd_v); } else if(op == 2){ busca_profundidade(grafo, vertice_inicial, vertice_final, qtd_v); } else{ printf("OPCAO INVALIDA\n"); return 0; } int x = vertice_final; printf("====: %d\n", vertice_final); while(grafo[x].pai != -1){ printf("====: %d\n", grafo[x].pai); x = grafo[x].pai; } printf("==== custo:: %d\n", grafo[vertice_final].custo); return 0; }