Cod sursa(job #707945)
Utilizator | Data | 6 martie 2012 09:37:19 | |
---|---|---|---|
Problema | Floyd-Warshall/Roy-Floyd | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <cstdio>
#define maxn 101
long i, j, k, a[maxn][maxn], N;
int main() {
freopen("royfloyd.in","r",stdin);
freopen("royfloyd.out","w",stdout);
scanf("%ld", &N);
for (i = 1; i <= N; ++i)
for (j = 1; j <= N; ++j) {
scanf("%ld", &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])
if (!a[i][j] || a[i][j] > a[i][k]+a[k][j])
if (i != j)
a[i][j] = a[i][k] + a[k][j];
return 0;
}