Cod sursa(job #2131138)

Utilizator prisacalexandruPrisac Alexandru prisacalexandru Data 14 februarie 2018 13:26:17
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<bits/stdc++.h>

using namespace std;

int dist[105][105],w[105][105];
int n;
const int oo=(1<<30);

int main(){
	ifstream cin("royfloyd.in");
	ofstream cout("royfloyd.out");
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>w[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			dist[i][j]=oo;
			if(i==j) dist[i][j]=0;
			dist[i][j]=w[i][j];
		}
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if((dist[i][j]>dist[i][k]+dist[k][j]
					|| !dist[i][j])&&dist[i][k]&&dist[k][j]&&i!=j)
					dist[i][j]=dist[i][k]+dist[k][j];
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			cout<<dist[i][j]<<" ";
		cout<<'\n';
	}
	return 0;
}