Cod sursa(job #198913)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 15 iulie 2008 21:10:16
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#include<limits.h>
#define NMAX 100
#define INF INT_MAX/2

int main(){
freopen("royfloyd.in","r",stdin);
freopen("royfloyd.out","w",stdout);
int n,i,j,k,a[NMAX][NMAX];
scanf("%d",&n);
for(i=0;i<n;++i)
	for(j=0;j<n;++j)
		scanf("%d",&a[i][j]);
for(i=0;i<n;++i)
	for(j=0;j<n;++j)
		if(i!=j&&a[i][j]==0) a[i][j]=INF;
for(k=0;k<n;++k)
	for(i=0;i<n;++i)
		if(i!=k)
		for(j=0;j<n;++j)
			if(j!=i&&j!=k)
				if(a[i][j]>a[i][k]+a[k][j])
					a[i][j]=a[i][k]+a[k][j];
for(i=0;i<n;++i)
	for(j=0;j<n;++j)
		if(i!=j&&a[i][j]==INF) a[i][j]=0;

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