Pagini recente » Cod sursa (job #1019889) | Cod sursa (job #811723) | Cod sursa (job #795127) | Cod sursa (job #1746762) | Cod sursa (job #1813508)
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#define MaxN 105
#define INF 2140000000
#define MAX 131072
using namespace std;
char f[MAX];
int pos=0,sign;
FILE *IN,*OUT;
void Read(int &nr)
{
nr=0,sign=1;
while(f[pos]>'9'||f[pos]<'0')
{
if(f[pos]=='-')
sign=-1;
pos++;
if(pos==MAX)
pos=0,fread(f,1,MAX,IN);
}
while(f[pos]<='9'&&f[pos]>='0')
{
nr=nr*10+f[pos++]-'0';
if(pos==MAX)
pos=0,fread(f,1,MAX,IN);
}
nr*=sign;
}
int N,v[MaxN][MaxN];
int main()
{
IN=fopen("royfloyd.in","r");
OUT=fopen("royfloyd.out","w");
fread(f,1,MAX,IN);
Read(N);
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
Read(v[i][j]);
for(int k=1;k<=N;k++)
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
if(i!=j&&v[i][k]&&v[k][j]&&(!v[i][j]||v[i][j]>v[i][k]+v[k][j]))v[i][j]=v[i][k]+v[k][j];
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
fprintf(OUT,"%d ",v[i][j]);
}
fprintf(OUT,"\n");
}
return 0;
}