Pagini recente » Cod sursa (job #2099993) | Cod sursa (job #1882263) | Cod sursa (job #2269979) | Cod sursa (job #2501948) | Cod sursa (job #1466449)
#include <iostream>
using namespace std;
int N,i,j,length[260][260],nmbOfStreets[260][260]={0},k;
int main()
{
freopen("rf.in","r",stdin);
freopen("rf.out","w",stdout);
scanf("%d",&N);
for (i=0;i<N;++i)
for (j=0;j<N;++j)
{
scanf("%d",&length[i][j]);
if (length[i][j]>0) nmbOfStreets[i][j]=1;
}
for (k=0;k<N;++k)
for (i=0;i<N;++i)
for (j=0;j<N;++j)
if (length[i][k]>0 && length[k][j]>0 && (length[i][j]==0 || length[i][j]>length[i][k]+length[k][j]) && i!=j)
length[i][j]=length[i][k]+length[k][j],
nmbOfStreets[i][j]=nmbOfStreets[i][k]+nmbOfStreets[k][j];
else if (length[i][k]>0 && length[k][j]>0 && length[i][j]==length[i][k]+length[k][j] && i!=j)
nmbOfStreets[i][j]=max(nmbOfStreets[i][k]+nmbOfStreets[k][j],nmbOfStreets[i][j]);
for (i=0;i<N;++i)
{
for (j=0;j<N;++j)
printf("%d ",length[i][j]);
printf("\n");
}
for (i=0;i<N;++i)
{
for (j=0;j<N;++j)
printf("%d ",nmbOfStreets[i][j]);
printf("\n");
}
return 0;
}