Pagini recente » Cod sursa (job #2377991) | Cod sursa (job #1660329) | Cod sursa (job #2104569) | Cod sursa (job #2285641) | Cod sursa (job #2037426)
#include <cstdio>
using namespace std;
FILE *in,*out;
const int nmax = 105;
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 (dp[i][k] && dp[k][j] && (dp[i][j] > dp[i][k] + dp[k][j] || !dp[i][j]) && i != j)
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;
}