Cod sursa(job #156442)

Utilizator snaked31Stanica Andrei snaked31 Data 12 martie 2008 15:50:50
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

#define nm 110

int i, j, k, n;
int a[nm][nm];

void read()

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


void solve()

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


void write()

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


int main()

{
	freopen("royfloyd.in", "r", stdin);
	freopen("royfloyd.out","w",stdout);

	read();
	solve();
	write();

	return 0;
}