Cod sursa(job #2950972)

Utilizator RaduAntoneoAntonio Alexandru Radu RaduAntoneo Data 4 decembrie 2022 22:46:37
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
#define cin f
#define cout g

int n;
vector<vector<int>> matrix;

int main() {
	cin >> n;

	matrix.resize(n, vector<int>(n, INT_MAX));

	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			cin >> matrix[i][j];

	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			if (matrix[i][j] == 0 && i != j)
				matrix[i][j] = INT_MAX;

	for (int k = 0; k < n; k++)	
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				matrix[i][j] = min(matrix[i][j], matrix[i][k] + matrix[k][j]);

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++)
			cout << (matrix[i][j] == INT_MAX ? 0 : matrix[i][j]) << " ";
		cout << '\n';
	}

	return 0;
}