Cod sursa(job #165631)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 26 martie 2008 13:56:39
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
#define N 150
#define INFI 0x3f3f3f3f
int n;
int v[N][N];
void scan(){
	int i,j;
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	scanf("%d",&n);
	for (i=0;i<n;++i)
		for (j=0;j<n;++j)
			scanf("%d",&v[i][j]);
}
void init(){
	int i,j;
	for (i=0;i<n;++i)
		for (j=0;j<n;++j)
			if (i!=j && v[i][j]==0)
				v[i][j]=INFI;
}
void solve(){
	int i,j,k;
	for (k=0;k<n;++k)
		for (i=0;i<n;++i)
			for (j=0;j<n;++j)
				if (v[i][j]>v[k][j]+v[i][k])
					v[i][j]=v[k][j]+v[i][k];
}
void print(){
	int i,j;
	for (i=0;i<n;++i){
		for (j=0;j<n;++j)
			printf("%d ",v[i][j]);
		printf("\n");
	}
}
void std_close(){
	fclose(stdin);
	fclose(stdout);
}
int main(){
	scan();
	solve();
	print();
	std_close();
	return 0;
}