Cod sursa(job #2065135)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 13 noiembrie 2017 14:25:56
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
using namespace std;

const int nmax = 105;
const int inf = 200000;

int mat[nmax][nmax];

void floyd (int n)
{
	for(int k = 0;k < n;++k)
	{
		for(int i = 0;i < n;++i)
		{
			for(int j = 0;j < n;++j)
			{
				mat[i][j] = min(mat[i][j], mat[i][k] + mat[k][j]);
			}
		}
	}
}

int main()
{
	ifstream in ("royfloyd.in");
	ofstream out("royfloyd.out");
	
	int n;
	in >> n;
	
	for(int i = 0;i < n;++i)
	{
		for(int j = 0;j < n;++j)
		{
			in >> mat[i][j];
			if(mat[i][j] == 0)
			{
				mat[i][j] = inf;
			}
		}
	}
	
	floyd(n);
	for(int i = 0;i < n;++i)
	{
		mat[i][i] = 0;
	}
	
	for(int i = 0;i < n;++i)
	{
		for(int j = 0;j < n;++j)
		{
			out<<mat[i][j]<<" ";
		}
		out<<"\n";
	}
	in.close();
	out.close();
}