Cod sursa(job #1131810)

Utilizator prog504prog504 prog504 Data 1 martie 2014 16:30:00
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>

const int infinite = 1000 * 1000 * 1000;

int n;
int x[100][100];

int Min(int a, int b) {
	return(a < b ? a : b);
}

void Read() {
	scanf("%d", &n);
	for (int i = 0; i < n; ++i)
	for (int j = 0; j < n; ++j) {
		scanf("%d", &x[i][j]);

		if (x[i][j] == 0) {
			if (i != j) {
				x[i][j] = infinite;
			}
		}
	}
}

void Solve() {
	for (int k = 0; k < n; ++k) {
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n; ++j) {
				if (i != j) {
					x[i][j] = Min(x[i][j], x[i][k] + x[k][j]);
				}
			}
		}
	}
}

void Write() {
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < n; ++j) {
			printf("%d ", x[i][j]);
		}
		printf("\n");
	}
}

int main() {
	freopen("royfloyd.in", "rt", stdin);
	freopen("royfloyd.out", "wt", stdout);

	Read();
	Solve();
	Write();
}