Cod sursa(job #2109777)

Utilizator cristii2000cristiiPanaite Cristian cristii2000cristii Data 20 ianuarie 2018 09:47:11
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#define inf 0x3f3f3f
#include <algorithm>

using namespace std;

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

int Graf[105][105];
int n;

void citire()
{
	in >> n;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= n; j++)
	{
		in >> Graf[i][j];
		if(Graf[i][j] == 0 && i != j)
			Graf[i][j] = inf;
	}
}

void royFloyd()
{
	int i, k, j;
	for(int k = 1; k <= n; k++)
		for(int i = 1; i <= n; i++)
			for(int j = 1; j <= n; j++)
				Graf[i][j] = min(Graf[i][j], Graf[i][k] + Graf[k][j]);
}

void afisare()
{
	for(int i = 1; i <= n; i++)
	{
		for(int j = 1; j <= n; j++)
			if(Graf[i][j] == inf)
				out << "0 ";
			else
				out << Graf[i][j] << " ";
		out << "\n";
	}
}

int main()
{
	citire();
	royFloyd();
	afisare();
    return 0;
}