Pagini recente » Cod sursa (job #516329) | Cod sursa (job #1165899) | Cod sursa (job #2887858) | Cod sursa (job #1275756) | Cod sursa (job #642961)
Cod sursa(job #642961)
#include <stdio.h>
#define FOR(i, a, b) for (i = a; i < b; ++i)
#define HIGHER(a, b) ((a > b) || !a)
int N, P[100][100];
void init() {
freopen("royfloyd.in", "r", stdin);
freopen("royfloyd.out", "w", stdout);
scanf("%d", &N);
int i, j;
FOR (i, 0, N)
FOR (j, 0, N)
scanf("%d", &P[i][j]);
}
void royfloyd() {
int i, j, k;
FOR (k, 0, N)
FOR (i, 0, N)
FOR (j, 0, N) {
if ( i == j )
continue;
if ( HIGHER(P[i][j], P[i][k] + P[k][j]) && P[i][k] && P[j][k] )
P[i][j] = P[i][k] + P[k][j];
}
}
void print() {
int i, j;
FOR(i, 0, N) {
FOR(j, 0, N)
printf("%d ", P[i][j]);
putchar('\n');
}
}
int main() {
init();
royfloyd();
print();
return 0;
}