Cod sursa(job #236630)

Utilizator ilincaSorescu Ilinca ilinca Data 28 decembrie 2008 00:58:39
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>

#define maxn 105


int n, m [maxn] [maxn];

void scan ()
{
	scanf ("%d", &n);
	for (int i=1; i <= n; ++i)
		for (int j=1; j <= n; ++j)
			scanf ("%d", &m [i] [j]);
}

inline int min (int a, int b)
{
	return (a < b)? a : b;
}

void res ()
{
	int i, j, k;
	for (i=1; i <= n; ++i)
		for (j=1; j <= n; ++j)
			for (k=1; k <= n; ++k)
				if (m [i] [k] && m [k] [j])
					m [i] [j]=min (m [i] [j], m [i] [k]+m [k] [j]);
}

void print ()
{
	for (int i=1; i <= n; ++i)
	{
		for (int j=1; j <= n; ++j)
			printf ("%d ", m [i] [j]);
		printf ("\n");
	}
}

int main ()
{
	freopen ("royfloyd.in", "r", stdin);
	freopen ("royfloyd.out", "w", stdout);
	scan ();
	res ();
	print ();
	return 0;
}