Cod sursa(job #2302779)

Utilizator q1e123Solca Robert-Nicolae q1e123 Data 15 decembrie 2018 10:07:27
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include<cstdio>
#include<climits>

#define MAX 101

int dp[MAX][MAX],n;

int min(int x,int y){
	if(x<y) return x;
	return y;
}

int main(){
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j){
			scanf("%d",&dp[i][j]);
			if(!dp[i][j]) dp[i][j] = 0x3f3f3f3f;
		}
	
	}

	for(int k=1;k<=n;++k){
		for(int i=1;i<=n;++i){
			for(int j=1;j<=n;++j){
				if(dp[k][j] && dp[i][k])dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
			}
		}
	}

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