Cod sursa(job #352470)

Utilizator capmIonut Vasilescu capm Data 1 octombrie 2009 22:50:06
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>

const int inf = 100000000;

int main()
{
	freopen("royfloyd.in", "r", stdin);
	freopen("royfloyd.out", "w", stdout);
	
	int n, c[101][101], i, j, k;

	scanf("%d", &n);
	for(i = 1; i <= n; ++i)
	{
		for(j = 1; j <= n; ++j)
		{
			scanf("%d", &c[i][j]);
			if(c[i][j] == 0)
			{
				c[i][j] = inf;
			}
		}
	}

	for(k = 1; k <= n; ++k)
	{
		for(i = 1; i <= n; ++i)
		{
			for(j = 1; j <= n; ++j)
			{
				if(c[i][j] > c[i][k] + c[k][j])
				{
					c[i][j] = c[i][k] + c[k][j];
				}
			}
		}
	}

	for(i = 1; i <= n; ++i)
	{
		for(j = 1; j <= n; ++j)
		{
			printf("%d ", (c[i][j] == inf  || i == j) ? 0 : c[i][j]);
		}
		printf("\n");
	}

	return 0;
}