Cod sursa(job #642057)

Utilizator Balmus_MaximBalmus Maximilian Balmus_Maxim Data 30 noiembrie 2011 15:28:59
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>

int n,k,i,j,v[101][101],m[101][101];

int main()
{
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			scanf("%d",&v[i][j]);
			if(v[i][j]==0){
				m[i][j]=1;
			}
		}
	}
	for(k=1;k<=n;k++){
		for(i=1;i<=n;i++){
			for(j=1;j<=n;j++){
				if(v[i][j]>v[i][k]+v[k][j] && m[i][j]!=1 && m[i][k]!=1 && m[k][j]!=1){
					v[i][j]=v[i][k]+v[k][j];
				}
			}
		}
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			printf("%d ",v[i][j]);
		}
		printf("\n");
	}
	return 0;
}