Exemple #1
0
int main(int argc, char *argv[]) {

    TG * testeGrafo = (TG *) malloc(sizeof(TG));
    testeGrafo = inicializa_grafo();

    char mensagem[256];

    printf("Entre com a mensagem: ");
    scanf("%[^\n]", &mensagem);

    printf("Mensagem original: %s\n", mensagem);
    printf("Tamanho da mensagem: %d caracteres\n", conta_letras(mensagem));

    int i, numero_letras = conta_letras(mensagem);

    for(i = 1; i < numero_letras; i++)
    {
       testeGrafo = adiciona_vizinho(testeGrafo,mensagem[i-1],mensagem[i]);
    }

    imprime_grafo(testeGrafo);

    libera_grafo(testeGrafo);

    testeGrafo = inicializa_grafo();
    free(testeGrafo);

    return 0;

}
Exemple #2
0
int main(int argc, char **argv) {

	int s_x, s_y, f_x, f_y, d_x, d_y;
	char *arquivo_entrada;
	if(argc != 8)
		return 1;
	arquivo_entrada = argv[1];
	s_x = atoi(argv[2]);
	s_y = atoi(argv[3]);
	f_x = atoi(argv[4]);
	f_y = atoi(argv[5]);
	d_x = atoi(argv[6]);
	d_y = atoi(argv[7]);	

	FILE* fp;
	fp = fopen (arquivo_entrada, "r");

	Mapa *map = ler_entrada(fp);
	Grafo *grafo = calloc(1, sizeof(Grafo));
	grafo->lista = calloc(map->N * map->M, sizeof(Vertice*));
	grafo->tamanho = map->N*map->M;

	aloca_lista(grafo);

	int indice_inicial = (s_y * map->M) + s_x;
	int indice_final = (f_y * map->M) + f_x;

	// Uma vez tendo nossa matriz de valores, devemos transformá-la no grafo
	matriz_para_grafo(map->matriz_mapa, grafo->lista, map->N, map->M, d_x, d_y );
	// Conectamos os atalhos
	conecta_atalhos(grafo, map);


	// Rodamos Djkistra a partir do nosso vertice inicial
	Djkistra(grafo, indice_inicial);

	int resultado;
	resultado = grafo->lista[indice_final]->d;
	// Se o resultado é o número máximo, significa que não existe caminho
	// logo printamos -1
	if(resultado ==  99999999)
		resultado = -1;
	printf("%d\n", resultado);

	libera_grafo(grafo);
	libera_mapa(map);
	fclose(fp);

	return 0;
}