Cod sursa(job #2041667)

Utilizator Spiromanii_MessiUNIBUCThrowTerror Spiromanii_Messi Data 17 octombrie 2017 18:02:18
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std ;

const int MAX = 111 ;

int rf [MAX][MAX] ; 

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

int main(int argc, char const *argv[])
{
	/* code */
	int n ;
	fin >> n ;
	for (int i = 1 ; i <= n ; ++ i) {
		for (int j = 1 ; j <= n ; ++ j) {
			fin >> rf [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 (rf [i][j] > rf [i][k] + rf [k][j] or !rf [i][j]) and rf [i][k] and rf [k][j]) {
					rf [i][j] = rf [i][k] + rf [k][j] ;
				}
			}
		}
	}

	for (int i = 1 ; i <= n ; ++ i) {
		for (int j = 1 ; j <= n ; ++ j) {
			fout << rf [i][j] << ' ' ;	
		}
		fout << '\n' ;
	}
 	return 0;
}