Pagini recente » Cod sursa (job #836820) | Cod sursa (job #1355957) | Cod sursa (job #1258630) | Cod sursa (job #3277442) | Cod sursa (job #550848)
Cod sursa(job #550848)
#include <stdio.h>
int N;
int path[100][100];
void FloydWarshall(int path[100][100])
{
int i, j, k;
for (k=0; k<N; ++k)
for (i=0; i<N; ++i)
for (j=0; j<N; ++j)
if (path[i][j] > (path[i][k]+path[k][j]))
path[i][j] = path[i][k] + path[k][j];
}
int main()
{
int i, j;
FILE *fin = fopen("royfloyd.in", "r");
FILE *fout = fopen("royfloyd.out", "w");
fscanf(fin, "%d", &N);
for (i=0; i<N; ++i)
for (j=0; j<N; ++j)
fscanf (fin, "%d", &path[i][j]);
fclose(fin);
for (i=0; i<N; ++i)
for (j=0; j<N; ++j)
if (i!=j && !path[i][j])
path[i][j] = 1001;
FloydWarshall(path);
for (i=0; i<N; ++i) {
for (j=0; j<N; ++j)
if (path[i][j] == 1001)
fprintf(fout, "0 ");
else
fprintf(fout, "%d ", path[i][j]);
fprintf(fout, "\n");
}
fclose(fout);
return 0;
}