Pagini recente » Cod sursa (job #556346) | Cod sursa (job #1481055) | Cod sursa (job #2888381) | Cod sursa (job #2568473) | Cod sursa (job #1228811)
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int n;
char c[3000];
int main()
{
int sol[260][260][2],nrd[260][260][2];
freopen("rf.in","r",stdin);
freopen("rf.out","w",stdout);
scanf("%d\n",&n);
for (int i=1;i<=n;++i)
{
gets(c); c[strlen(c)+1]='\0'; c[strlen(c)]=' ';
int z=0;
for (int j=1;j<=n;++j)
{
while (c[z]!=' ')
{
sol[i][j][0]=sol[i][j][0]*10+(c[z]-'0');
++z;
}
while (c[z]==' ') ++z;
if (sol[i][j][0]!=0) nrd[i][j][0]=1;
}
}
for (int k=1;k<=n;++k)
{
char pas1,pas2;
pas1=k&1;
pas2=(k+1)&1;
for (int i=1;i<=n;++i)
{
for (int j=1;j<i;++j)
{
sol[i][j][pas1]=sol[i][j][pas2]; nrd[i][j][pas1]=nrd[i][j][pas2];
int val=sol[i][k][pas2]+sol[k][j][pas2],val2=nrd[i][k][pas2]+nrd[k][j][pas2];
if (val<sol[i][j][pas1])
{
sol[i][j][pas1]=val; nrd[i][j][pas1]=val2;
}else if (val==sol[i][j][pas1] && val2>nrd[i][j][pas1]) nrd[i][j][pas1]=val2;
sol[j][i][pas1]=sol[i][j][pas1]; nrd[j][i][pas1]=nrd[i][j][pas1];
}
}
}
int pas=n%2;
for (int i=1;i<=n;++i)
{
for (int j=1;j<=n;++j)
{
printf("%d ",sol[i][j][pas]);
}
printf("\n");
}
for (int i=1;i<=n;++i)
{
for (int j=1;j<=n;++j)
{
printf("%d ",nrd[i][j][pas]);
}
printf("\n");
}
fclose(stdin);
fclose(stdout);
return 0;
}