Pagini recente » Atasamentele paginii Tritzi | Diferente pentru blog/square-root-trick intre reviziile 9 si 8 | Diferente pentru utilizator/gerd13 intre reviziile 4 si 3 | Atasamentele paginii Tritzi | Cod sursa (job #1717071)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 105;
const int INF = 1e9;
int d[NMAX][NMAX];
int main(void) {
freopen("royfloyd.in", "r", stdin);
freopen("royfloyd.out", "w", stdout);
int n;
scanf("%d",&n);
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
scanf("%d",&d[i][j]);
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
d[i][j] = d[i][j]?d[i][j]:INF;
for(int k=1; k<=n; ++k)
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
if(i!=j)
d[i][j] = min(d[i][j], d[i][k]+d[k][j]);
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
d[i][j] = (d[i][j]==INF)?0:d[i][j];
for(int i=1; i<=n; ++i) {
for(int j=1; j<=n; ++j)
printf("%d ",d[i][j]);
printf("\n");
}
fclose(stdin);
fclose(stdout);
return 0;
}