Cod sursa(job #2654453)

Utilizator raikadoCri Lu raikado Data 1 octombrie 2020 05:00:34
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <iostream>
#include <algorithm>

using namespace std;

const int MAXN = 100;

int mat[MAXN][MAXN];

int main(int argc, char const *argv[])
{
	ifstream fin("royfloyd.in");
	ofstream fout("royfloyd.out");

	int N; fin >> N;

	for (int i = 0; i < N; i++) 
		for (int j = 0; j < N; j++)
			fin >> mat[i][j];

	for (int k = 0; k < N; k++)
	{
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < N; j++)
			{
				if (mat[i][j] != 0 && mat[i][k] != 0 && mat[k][j] != 0)
					mat[i][j] = min(mat[i][j], mat[i][k] + mat[k][j]);
				else if (mat[i][j] == 0 && mat[i][k] != 0 && mat[k][j] != 0)
					mat[i][j] = mat[i][k] + mat[k][j];
			}
		}
	}

	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			if (i != j)
				fout << mat[i][j] << ' ';
			else
				fout << "0 ";
		}
		fout << '\n';
	}
	
	return 0;
}