Cod sursa(job #794470)

Utilizator matei_cChristescu Matei matei_c Data 6 octombrie 2012 13:18:10
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<cstdio>
#include<algorithm>
using namespace std;

#define INF 10000000
#define maxn 105 

int a[maxn][maxn] ;
int n ;

int main()
{

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

	scanf("%d",&n);
	
	for(int i=1;i<=n;++i)
	{	
		for(int j=1;j<=n;++j)
		{	
			scanf("%d",&a[i][j]);
			if( a[i][j] == 0 && i != j )
				a[i][j] = INF ;
		}
	}	
	
	for(int k=1;k<=n;++k)
		for(int i=1;i<=n;++i)
			for(int j=1;j<=n;++j)
				a[i][j] = min ( a[i][j] , a[i][k] + a[k][j] ) ;

	

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

}