Cod sursa(job #2814751)

Utilizator stevejobsMihail Popescu stevejobs Data 8 decembrie 2021 16:01:24
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <random>        
#include <chrono>        

int m[101][101];

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

int n;

int main() {
	f >> n;
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j) {
			f >> m[i][j];
			if (m[i][j] == 0)m[i][j] = 1e9;
		}

	std::vector<int> test;
	for (int i = 1; i <= n; ++i)
		test.push_back(i);

	unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();

	std::shuffle(test.begin(), test.end(), std::default_random_engine(seed));
 

	for (int k=1;k<=n;++k)
		for (int i = 1; i <= n; ++i)
			for (int j = 1; j <= n; ++j)
				if (m[i][k] + m[k][j] < m[i][j])
					m[i][j] = m[i][k] + m[k][j];


	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= n; ++j)
			g << (m[i][j] == 1e9 ? 0 : m[i][j]) << ' ';
		g << '\n';
	}
}