Cod sursa(job #2841457)

Utilizator luiz_felipeLuiz Felipe luiz_felipe Data 29 ianuarie 2022 19:14:46
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#define FOR(i, a, b) for (i = (a); i <= (b); ++i)
using namespace std;
const char InPut[] = "royfloyd.in";
const char OutPut[] = "royfloyd.out";
int n, a[105][105], i, j, k;
void citire();
void royFloyd();
void tipar();

int main() {
	citire();
	royFloyd();
	tipar();
}

void citire()
{
	ifstream f(InPut);
	f >> n;
	FOR(i, 1, n)
		FOR(j, 1, n) f >> a[i][j];
}

void royFloyd()
{
	FOR(k, 1, n)
		FOR(i, 1, n)
		     FOR(j, 1, n)
		          if (a[i][k] and a[k][j] and (a[i][j] > a[i][k] + a[k][j] or !a[i][j]) and i != j) a[i][j] = a[i][k] + a[k][j];
}

void tipar()
{
	ofstream g(OutPut);
	FOR(i, 1, n) {
		FOR(j, 1, n) g << a[i][j] << ' ';
		g << '\n';
	}
}