Cod sursa(job #676863)

Utilizator marius135Dumitran Adrian Marius marius135 Data 9 februarie 2012 17:41:52
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#define maxn 128
int v[ maxn ][ maxn ];

int main()
{
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	int n;
	scanf("%d", &n);
	for( int i = 1; i <= n; ++i) 
		for( int j = 1; j <= n; ++j)
			scanf("%d", &v[i][j]);
	
	for( int i = 1; i <= n; ++i)
		for( int k = 1; k <= n; ++k)
			for( int j = 1; j <= n; ++j) {
				if( k == j)  continue;
				if( v[k][i] == 0 || v[i][j] == 0) continue;
				if( v[k][i] + v[i][j] < v[k][j] || (v[k][j] == 0))
				    v[k][j] = v[k][i] + v[i][j];         
			}
	for( int i = 1; i <= n; ++i) 
	{
		for( int j = 1; j < n; ++j)
			printf("%d ", v[i][j]);
		printf("%d\n", v[i][n]);
	}
	
	
	
	return 0;
}