Cod sursa(job #158227)

Utilizator swift90Ionut Bogdanescu swift90 Data 13 martie 2008 15:39:53
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<stdio.h>
int nr[105][105];
int main(){
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	int n,i,j,k;
	
	scanf("%d",&n);
	for(i=0;i<n;++i){
		for(j=0;j<n;++j)
			scanf("%d",&nr[i][j]);
	}
	for(k=0;k<n;++k){
		for(i=0;i<n;++i){
			for(j=0;j<n;++j){
				if(nr[i][k] && nr[k][j] && i!=j && (nr[i][k]+nr[k][j]<nr[i][j] || !nr[i][j]))
					nr[i][j]=nr[i][k]+nr[k][j];
			}
		}
	}
	for(i=0;i<n;++i){
		for(j=0;j<n-1;++j)
			printf("%d ",nr[i][j]);
		printf("%d\n",nr[i][n-1]);
	}
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}