Cod sursa(job #876804)

Utilizator swim406Teudan Adina swim406 Data 12 februarie 2013 10:17:04
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>

using namespace std;

int N, a[101][101];

int main() {
	freopen ("royfloyd.in", "r", stdin);
	freopen ("royfloyd.out", "w", stdout);
	scanf ("%d", &N);
	int i, j, k;
	for (i = 1; i <= N; ++i)
		for (j = 1; j <= N; ++j)
			scanf("%d", &a[i][j]);
	for (k = 1; k <= N; k++)
        for (i = 1; i <= N; i++)
            for (j = 1; j <= N; j++)
                if (a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j) 
					a[i][j] = a[i][k] + a[k][j];
	for (i = 1; i <= N; ++i) {
		for (j = 1; j <= N; ++j)
			printf("%d ", a[i][j]);
		printf("\n");
	}
	return 0;
}