Cod sursa(job #1704963)

Utilizator perjulucianPerju Lucian Ionut perjulucian Data 19 mai 2016 17:52:44
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
const int INF = 1234567;

std::ifstream f("royfloyd.in");
std::ofstream g("royfloyd.out");

int N;

int matrix[101][101];

void read(){
	f >> N;
	for(int i = 1 ; i <= N ; ++i){
		for(int j = 1 ; j <= N ; ++j){
			f >> matrix[i][j];
			if(matrix[i][j] == 0 && i != j){
				matrix[i][j] = INF;
			}
		}
	}
}

void floyd(){
	for(int k = 1; k <= N ; ++k){
		for(int i = 1;  i <= N ; ++i){
			for(int j =1 ; j <= N ; ++j){
				if(matrix[i][k] != 0 && matrix[k][j] != 0 && i != j){
					matrix[i][j] = min(matrix[i][k] + matrix[k][j],matrix[i][j]);
				}
			}
		}
	}
}

void print(){
	for(int i = 1 ; i <= N ; ++i){
		for(int j = 1 ; j <= N ; ++j){
			g << matrix[i][j] << " ";
		}
		g << "\n";
	}
}

int main(){
	read();
	floyd();
	print();
	return 0;

}