Cod sursa(job #667685)

Utilizator pykhNeagoe Alexandru pykh Data 23 ianuarie 2012 16:58:30
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<cstdio>
using namespace std;

const char in[]="royfloyd.in";
const char out[]="royfloyd.out";

const int N = 105;

int a[N][N], n;

int main()
	{
		freopen(in,"r",stdin);
		freopen(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]);
			
		for(int k = 1 ; k <= n ; ++k)
			for(int i = 1 ; i <= n ; ++i)
				for(int j = 1 ; j <= n ; ++j)
					if(a[i][k] && a[k][j] && i != j && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]))
						a[i][j] = a[i][k] + a[k][j];
					
		for(int i = 1; i <= n ; ++i){
			for(int j = 1 ; j <= n ; ++j)
				printf("%d " ,a[i][j]);
				printf("\n");}
		
		return 0;
}