Pagini recente » Diferente pentru preoji/clasament/11-12 intre reviziile 2 si 3 | Istoria paginii utilizator/mihneafunny | Istoria paginii utilizator/robertflorea | Istoria paginii utilizator/andreivlasceanu | Cod sursa (job #1206543)
#include <stdio.h>
#include <algorithm>
int N, D[101][101][101];
FILE *in, *out;
int main()
{
in = fopen("royfloyd.in", "r");
out = fopen("royfloyd.out", "w");
fscanf(in, "%d", &N);
for(int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
fscanf(in, "%d", &D[i][j][0]);
for(int k = 1; k <= N; k++)
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++){
D[i][j][k] = std::min(D[i][j][k -1], D[i][k][k - 1] + D[k][j][k -1]);
}
for(int i = 1; i <= N; i++){
for(int j = 1; j <= N; j++)
fprintf(out, "%d ", D[i][j][N]);
fprintf(out, "\n");
}
fclose(in);
fclose(out);
return 0;
}