Pagini recente » Cod sursa (job #332925) | Cod sursa (job #1086146) | Cod sursa (job #1194190) | Cod sursa (job #1365836) | Cod sursa (job #2037424)
#include <cstdio>
using namespace std;
FILE *in,*out;
const int nmax = 100;
int dp[1+nmax][1+nmax];
int min(int a,int b)
{
if(a < b)
return a;
return b;
}
int main()
{
in = fopen("royfloyd.in","r");
out = fopen("royfloyd.out","w");
int n;
fscanf(in,"%d",&n);
for(int i = 1; i <= n; i ++)
{
for(int j = 1; j <= n; j ++)
{
int x;
fscanf(in,"%d",&x);
dp[i][j] = x;
}
}
for(int k = 1;k <= n;k ++)
{
for(int i = 1;i <= n;i ++)
{
for(int j = 1;j <= n;j ++)
{
if(i != j && dp[i][k] != 0 && dp[k][j] != 0)
dp[i][j] = min(dp[i][j],dp[i][k]+dp[k][j]);
}
}
}
for(int i = 1;i <= n;i ++)
{
for(int j = 1;j <= n;j ++)
fprintf(out,"%d ",dp[i][j]);
fprintf(out,"\n");
}
return 0;
}