Esempio n. 1
0
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;
}
Esempio n. 2
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);

}