Escolar Documentos
Profissional Documentos
Cultura Documentos
h>
#include <stdlib.h>
struct dupla{
int vertices[100];
int tamanho;
};
// Funcao para somar as arestas, guardar os vertices de cada caminho menor, pegar o
ultimo vertice de i a j.
void soma_arestas(int vert, int count, int posicao, int result_1[vert][vert], int
result_2[vert][vert],
int matriz[vert][vert], int booleano[vert][vert], struct dupla dupla[vert][vert]){
void Resposta(int vert, int ciclo, int count, int result_1[vert][vert], int
result_2[vert][vert],
struct dupla dupla[vert][vert], int caminhos, int requisitado[caminhos][vert+2]){
if(j == 1)
printf("%d",(result_1[j][i] == 10000) ? -1 : result_1[j]
[i]);
else
printf(" %d",(result_1[j][i] == 10000) ? -1 : result_1[j]
[i]);
}
printf("\n");
}
if(j == 1){
if(result_2[j][i] != 0)
printf("%d", result_2[j][i]);
else
printf("-");
}
else{
if(result_2[j][i] != 0)
printf(" %d", result_2[j][i]);
else
printf(" -");
}
}
printf("\n");
}
++ciclo;
}
if(requisitado[i][2] == 0){
printf("%d", result_1[requisitado[i][1]][requisitado[i][0]]);
printf(" %d", dupla[requisitado[i][1]][requisitado[i][0]].tamanho
+ 1);
if(j == dupla[requisitado[i][1]][requisitado[i][0]].tamanho)
printf(" %d", requisitado[i][1]);
}
if(i != caminhos - 1)
printf("\n");
}
if(requisitado[i][2] != 0){
printf("%d %d", -1, 0);
if(i != caminhos - 1)
printf("\n");
}
}
}
// Algoritimo de Djisktra.
void Algoritimo(int vert, int matriz[vert][vert], struct dupla dupla[vert][vert],
int caminhos,
int requisitado[caminhos][vert+2], int count, int ciclo){
result_1[count][count] = 0;
// Inicializaçao.
int main(){
// Declaaraçao de variaveis.
int vert, arest, caminhos, temp[4];
scanf("%d%d%d", &vert, &arest, &caminhos);
vert += 1, caminhos += 1;
int matriz[vert][vert], requisitado[caminhos][vert+2];
struct dupla dupla[vert][vert];
// Escaneando as arestas.
for(int i = 0; i < arest; ++i){
scanf("%d%d%d", &temp[1], &temp[2], &temp[3]);
matriz[temp[1]][temp[2]] = temp[3];
}
// Chamando o Algoritimo.
for(int i = 1; i < vert; ++i)
Algoritimo(vert, matriz, dupla, caminhos, requisitado, i, 0);
/*3 4 3
1 2 8
1 3 5
2 1 3
3 2 2
1 2 1 2
2 3 1 3
1 3 0*/
return 0;
}