Pagini recente » Cod sursa (job #154863) | Cod sursa (job #1607681) | Cod sursa (job #701141) | Cod sursa (job #1713388) | Cod sursa (job #970721)
Cod sursa(job #970721)
#include <cstdio>
#include <climits>
int main(void)
{
freopen("royfloyd.in", "r", stdin);
freopen("royfloyd.out", "w", stdout);
int nV;
scanf("%d", &nV);
long *nArr_c = new long[nV * nV];
for(int i(0); i < nV * nV; i++)
scanf("%d", &nArr_c[i]);
long *nArr = new long[nV * nV];
for(int i(0); i < nV * nV; i++)
nArr[i] = INT_MAX;
for(int i(0); i < nV; i++)
for(int j(0); j < nV; j++)
if(nArr_c[i * nV + j]) nArr[i * nV + j] = nArr_c[i * nV + j];
for(int i(0); i < nV; i++)
nArr[i * nV + i] = 0;
for(int k(0); k < nV; k++)
for(int i(0); i < nV; i++)
for(int j(0); j < nV; j++)
if(nArr[i * nV + j] > nArr[i * nV + k] + nArr[k * nV + j])
nArr[i * nV + j] = nArr[i * nV + k] + nArr[k * nV + j];
for(int i(0); i < nV; i++)
{
for(int j(0); j < nV; j++)
if(nArr[i * nV + j] == INT_MAX) printf("%d ", 0);
else printf("%d ", nArr[i * nV + j]);
printf("%s", "\n");
}
return 0;
}