Cod sursa(job #2227607)

Utilizator BloodRainBurceanu Gabriel BloodRain Data 1 august 2018 10:25:10
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int a[100][100] = { 0 };
int cmmdc(int a, int b)
{
	while (b)
	{
		int aux = b;
		b = a % b;
		a = aux;
	}
	return a;
}

int main()
{
	int n;
	in >> n;
	for (int i = 0; i < n; ++i)
		for (int j = 0; j < n; ++j)
		{
			in >> a[i][j];
		}

	for (int k = 0; k < n; ++k)
		for (int j = 0; j < n; ++j)
			for (int i = 0; i < n; ++i)
			{
				if (i == j || j == k || i == k)
					continue;

				int ik = a[i][k];
				int kj = a[k][j];
				int ij = a[i][j];

				int dist = ik + kj;
				if (ik && kj && (dist < ij || !ij ))
				{
					a[i][j] = dist;
				}
			}

	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < n; ++j)
		{
			out << a[i][j] << " ";
		}
		out << "\n";
	}

	return 0;
}