Pagini recente » Cod sursa (job #1485671) | Cod sursa (job #1046281) | Cod sursa (job #1646636) | Cod sursa (job #1184975) | Cod sursa (job #1098310)
#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);
}