Cod sursa(job #349218)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 18 septembrie 2009 18:03:42
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>
#define nmax 102
#define for(a,b) for(a=1; a<=b;a++)

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

void read()
{
	freopen("rf.in", "r", stdin);
	freopen("rf.out", "w", stdout);
	scanf("%d", &n);
	for(i,n)
		for(j,n)
			scanf("%d", &a[i][j]);
}

void write()
{
	for(i,n)
	{
		for(j,n)
			printf("%d ", a[i][j]);
		printf("\n");
	}
}

void royfloyd()
{
	for(i,n)
		for(j,n)
			for(k,n)
				if(i!=j&&a[i][k]!=0&&a[k][j]!=0&&(a[i][j]>a[i][k]+a[k][j]||a[i][j]==0))
					a[i][j]=a[i][k]+a[k][j];
}

int main()
{
	read();
	royfloyd();
	write();
	return 0;
}