Cod sursa(job #2659257)

Utilizator StefanSanStanescu Stefan StefanSan Data 16 octombrie 2020 12:37:24
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include      <iostream>
#include      <fstream>
#include      <algorithm>
#include      <vector>
#include      <queue>
#include      <cmath>

#define MAX  101
#define INF (1 << 30)

using namespace std;

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

int n, a[MAX][MAX];

int main() {
   
	ios::sync_with_stdio(false);
	in.tie(NULL), out.tie(NULL);

	in >> n;

	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			in >> a[i][j];
			if (a[i][j] == 0) a[i][j] = INF;
		}
		a[i][i] = 0;
	}

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

	}

	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) 
			out << a[i][j] << ' ';
		
		out << '\n';
	}

    return 0;

}