Cod sursa(job #2404033)

Utilizator Dobricean_IoanDobricean Ionut Dobricean_Ioan Data 12 aprilie 2019 11:16:49
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;

ifstream fin ("royfloyd.in");
ofstream fout ("royfloyd.out");

const int Dim = 101,Inf = 0x3f3f3f3f;
int A[Dim][Dim],D[Dim][Dim],n;

int main() {
	
	fin >> n;
	for ( int i = 1; i <= n; ++i)
		for ( int j = 1; j <= n; ++j)
			fin >> A[i][j];
	for ( int i=  1; i <= n;++i)
		for ( int j = 1; j <= n; ++j)
			D[i][j] = Inf;
	for ( int i = 1; i <= n; ++i)
		for ( int j = 1; j <= n; ++j)
			if ( A[i][j] != 0)
				D[i][j] = A[i][j];
	for( int k = 1; k <= n; ++k)
		for ( int i = 1; i <= n; ++i)
			for ( int j = 1; j <= n; ++j)
				if ( i != k and j != k and i != j and D[i][j] > D[i][k] + D[k][j] )
					D[i][j] = D[i][k] + D[k][j];
	for( int i = 1 ; i <= n; ++i,fout << "\n")
		for ( int j = 1; j <= n; ++j)
			if ( D[i][j] == Inf or i == j)
				fout << 0 << " ";
			else
				fout << D[i][j] << " ";
}