Cod sursa(job #635115)

Utilizator RengelBotocan Bogdan Rengel Data 18 noiembrie 2011 14:48:02
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>

int A[105][105];
int n;

void read(){
	
	freopen("royfloyd.in","r",stdin);
	
	scanf("%d",&n);
	
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			scanf("%d",&A[i][j]);
			if(i!=j && !A[i][j])
				A[i][j]=1001;
		}
	
}

void royfloyd(){
	
	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]<A[i][j])
					A[i][j]=A[i][k]+A[k][j];

}

void write(){
	
	freopen("royfloyd.out","w",stdout);
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(A[i][j]==1001)
				A[i][j]=0;
			printf("%d ",A[i][j]);
		}
		printf("\n");
	}
	
}

int main(){
	
	read();
	
	royfloyd();
	
	write();
	
	return 0;
	
}