Cod sursa(job #808501)

Utilizator ahmed.abdraboahmed.abdrabo ahmed.abdrabo Data 6 noiembrie 2012 20:25:13
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <algorithm>
using namespace std;

inline int next_int() {
	int d;
	scanf("%d", &d);
	return d;
}

int M[100][100];

int main() {
	freopen("royfloyd.in", "r", stdin);
	freopen("royfloyd.out", "w", stdout);
	int N = next_int();
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			M[i][j] = next_int();
			M[i][j] = (M[i][j] == 0) ? (1 << 28) : (M[i][j]);
		}
	}
	for (int i = 0; i < N; i++) {
		M[i][i] = 0;
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			for (int k = 0; k < N; k++) {
				M[j][k] = min(M[j][k], M[j][i] + M[i][k]);
			}
		}
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			printf("%d ", (M[i][j] == (1 << 28)) ? (0) : (M[i][j]));
		}
		printf("\n");
	}
	return 0;
}