Cod sursa(job #1132535)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 3 martie 2014 16:31:11
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <cstring>
using namespace std;

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

#define nmax 101
#define inf 0x3f3f3f3f

int i, j, k, N;

int a[nmax][nmax];

int main() {
	fin >> N;
	for (i = 1; i <= N; ++i) {
		for (j = 1; j <= N; ++j) {
			fin >> a[i][j];
			if (!a[i][j]) 
				a[i][j] = inf;
		}
	}
	for (k = 1; k <= N; ++k) {
		for (i = 1; i <= N; ++i) {
			for (j = 1; j <= N; ++j) {
				if (i == j) continue;
				if (a[i][k] + a[k][j] < a[i][j]) 
					a[i][j] = a[i][k] + a[k][j];
			}
		}
	}
	for (i = 1; i <= N; ++i) {
		for (j = 1; j <= N; ++j) {
			if (a[i][j] == inf) a[i][j] = 0;
			fout << a[i][j] << ' ';
		}
		fout << '\n';
	}
	return 0;
}