Pagini recente » Cod sursa (job #1404147) | Cod sursa (job #2204111) | Cod sursa (job #2089346) | Cod sursa (job #2169280) | Cod sursa (job #1499884)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
unsigned short n,i,j,a[256][256],dist[256][256],k,p,q,v[5000],ii;
void read()
{
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
f>>a[i][j];
}
}
void dijkstra(int ii)
{
for(i=1;i<=n;i++) dist[ii][i]=60000;
dist[ii][ii]=0; v[1]=ii; q=0; k=1; p=0;
do
{
for(i=q+1;i<=q+k;i++)
for(j=1;j<=n;j++)
if(dist[ii][j]>dist[ii][v[i]]+a[v[i]][j] && a[v[i]][j]>0)
{
dist[ii][j]=dist[ii][v[i]]+a[v[i]][j];
p++;
v[q+k+p]=j;
}
q+=k; k=p; p=0;
}while(k>0);
}
void write()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) g<<dist[i][j]<<" ";
g<<endl;
}
g.close();
}
int main()
{
read();
for(ii=1;ii<=n;ii++) dijkstra(ii);
write();
return 0;
}