Cod sursa(job #1098310)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 4 februarie 2014 18:44:28
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");

vector<vector<unsigned>> pondMat;
vector<vector<unsigned long long>> roadMat;

void InitMats(size_t n) {
	for(size_t i = 0; i < n; ++i) {
		pondMat[i].resize(n);
		roadMat[i].resize(n,-1);
		roadMat[i][i]=0;
	}
}

void ReadPondMat(size_t n) {
	for(size_t i = 0; i < n; ++i)
		for(size_t j = 0; j < n; ++j) {
			in >> pondMat[i][j];
			roadMat[i][j] = pondMat[i][j];
		}
}

void GenRoadMat(size_t n) {
	for(size_t k = 0; k < n; ++k)
		for(size_t i = 0; i < n; ++i)
			for(size_t j = 0; j < n; ++j)
				if(roadMat[i][j] > roadMat[i][k]+roadMat[k][j])
					roadMat[i][j] = roadMat[i][k]+roadMat[k][j];
}

void PrintRoadMat(size_t n) {
	for(size_t i = 0; i < n; ++i) {
		for(size_t j = 0; j < n; ++j) {
			out << roadMat[i][j] << ' ';
		}
		out << '\n';
	}
}

int main() {
	size_t n;
	in >> n;
	pondMat.resize(n);
	roadMat.resize(n);
	InitMats(n);
	ReadPondMat(n);
	GenRoadMat(n);
	PrintRoadMat(n);
	
}