Cod sursa(job #2342841)

Utilizator EdythestarGhiriti Edmond Edythestar Data 13 februarie 2019 13:34:06
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int n;
vector<vector<int> > a;

void read(){
	fin >> n;
	a.resize(n+1, vector<int>(n+1));
	for (int i = 1; i <= n; i++){
		for (int j = 1; j <= n; j++){
			fin >> a[i][j];
		}
	}
}

void solve(){
	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] || !a[i][j]) && i != j && a[i][k] && a[k][j])
					a[i][j] = a[i][k] + a[k][j];
			}
		}
	}
}

void write(){
	for (int i = 1; i <= n; i++){
		for (int j = 1; j <= n; j++){
			fout << a[i][j] << " ";
		}
		fout << "\n";
	}
}

int main(){
	read();
	solve();
	write();
}