Cod sursa(job #412195)

Utilizator slayer4uVictor Popescu slayer4u Data 5 martie 2010 13:44:41
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>

long n;
long graf[200][200];

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

	scanf("%ld", &n);

	for (long i = 1; i <= n; ++i)
		for (long j = 1; j <= n; ++j)
		{
			scanf("%ld", &graf[i][j]);
		}

	for (long i = 1; i <= n; ++i)
		for (long j = 1; j <= n; ++j)
			for (long k = 1; k <= n; ++k)
			{
				if (i != k && graf[i][j] && graf[j][k] && (graf[i][j] + graf[j][k] < graf[i][k] || !graf[i][k]))
					graf[i][k] = graf[i][j] + graf[j][k];
			}

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

	return 0;
}