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; }
void caminho_curto(){ // ----------------------------------- MATRIZ ADJACENTE FILE *arq; int cont, e; arq = fopen("grafo.txt", "r"); char x = 1, atual = 0, aux; int cont2 = 0, cont3 = 1, i = 0, j = 0; cont = qtd_vertices(arq); // CRIANDO MATRIZ int mat[cont][cont]; for(i = 0; i < cont; i++){ for(j = 0; j < cont; j++){ mat[i][j] = 0; } } // CRIA LISTA E ELEMENTO AUXILIAR Lista *L = cria_lista(); ElementoL *E; // CORE fflush(stdout); fseek(arq, 2, SEEK_SET); // Posiciona cursor na segunda linha x = fgetc(arq); while(x != EOF){ while(x != '\n'){ // varre uma linha do txt // Busca Letra na Lista E = busca_letra(x, L); if (E == NULL){ adiciona_letra(L, x , cont2); cont2++; } i = get_numero(busca_letra(x, L)); // ------------- J fseek(arq, 1, SEEK_CUR); x = fgetc(arq); E = busca_letra(x, L); if(E == NULL){ adiciona_letra(L, x , cont3); cont3++; } j = get_numero(busca_letra(x, L)); // ------------- J fseek(arq, 1, SEEK_CUR); fscanf(arq, "%i", &mat[i][j]); x = fgetc(arq); // Pula uma letra } x = fgetc(arq); if(atual != x){ // mudou de linha atual = x; // recebe letra do vertice i++; } } for(i = 0; i + 1 < cont ; i++){ printf("\n"); for(j = 0; j + 1< cont; j++){ printf(" %d |",mat[i][j]); } } // ----------------------------------- char c1, c2; // LER OS VERTICES flush_in(); printf("Entre com o primeiro vértice:"); scanf("%c", &c1); flush_in(); printf("\nEntre com o segundo vértice:"); scanf("%c", &c2); // --- com fila! // printa c1 for(i = 0;i < cont;i++){ // analisa o i atual for(j = 0;j < cont;j++){ // joga coluna atual na fila } } // --- Analisa linha A /*E = busca_letra(c1, L); printf("\n %c - ", c1); for(j = 0; j < cont; j++){ if(mat[E->numero][j] != 0){ // É solução ? // printa // return // Não é solução } }*/ // ------------------- // FECHAR ARQUIVO DO GRAFO fclose(arq); }