Cod sursa(job #2207362)

Utilizator petretiberiu46Petre Tiberiu petretiberiu46 Data 25 mai 2018 15:53:23
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

int n;
vector<vector<int>> graf;

void citeste() {
	fin >> n; int x;
	for (int i = 0; i < n; i++) {
		vector<int>* row = new vector<int>;
		for (int j = 0; j < n; j++) {
			fin >> x;
			row->push_back(x);
		}
		graf.push_back(*row);
	}
}

void afisare(ostream& out = std::cout) {
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++) {
			out << graf[i][j] << " ";
		}
		out << endl;
	}
}

void royfloyd() {
	for (int k = 0; k < n; k++) {
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				if (graf[i][j] > graf[i][k] + graf[k][j])
					graf[i][j] = graf[i][k] + graf[k][j];
	}
}

int main() {
	citeste();
	royfloyd();
	afisare(fout);
	return 0;
}