Cod sursa(job #2193832)

Utilizator SebastianGiurgiuGiurgiu Sebastian Mircea SebastianGiurgiu Data 11 aprilie 2018 17:09:02
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<iostream>
#include<fstream>


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

const int Nlim = 105;
int N;
int a[Nlim][Nlim];


void citire() {

	f >> N;
	for (int i = 1; i <= N; i++)
		for (int j = 1; j <= N; j++)
			f >> a[i][j];

}

void RoyFloyd() {

	for (int k = 1; k <= N; k++)
		for (int i = 1; i <= N; i++)
			for (int j = 1; j <= N; j++)
				if (a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j) 
					a[i][j] = a[i][k] + a[k][j];
		


	for (int i = 1; i <= N; i++)
	{
		for (int j = 1; j <= N; j++)
			g << a[i][j] << " ";
		g << "\n";
	}


}






int main() {
	citire();
	RoyFloyd();

	return 0;
}