Cod sursa(job #172790)

Utilizator slayer4uVictor Popescu slayer4u Data 6 aprilie 2008 19:21:43
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <stdio.h>

long n, i, j, k, x[200][200];

int main()
{
	freopen("royfloyd.in", "rt", stdin);
	freopen("royfloyd.out", "wt", stdout);

	scanf("%ld", &n);

	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j)
			scanf("%ld", &x[i][j]);

	for (i = 1; i <= n; ++i)
		for (j = 1; j <= n; ++j)
			for (k = 1; k <= n; ++k)
				if (x[i][k] && x[k][j] && (x[i][k] + x[k][j] < x[i][j] || !x[i][j]) && i != j)
					x[i][j] = x[i][k] + x[k][j];

	for (i = 1; i <= n; ++i) 
	{
		for (j = 1; j <= n; ++j)
			printf("%ld ", x[i][j]);
		printf("\n");
	}

	return 0;
}