Pagini recente » Cod sursa (job #386415) | Cod sursa (job #702137) | Cod sursa (job #266492) | Cod sursa (job #818469) | Cod sursa (job #2124367)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
const int inf=10000;
int n,a[101][101],d[1001],p[1001];
void citire()
{f>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{int c;
f>>c;
a[i][j]=c;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if(i==j) a[i][j]=0;
else if(!a[i][j]) a[i][j]=inf;
}
}
void dijkstra(int x)
{ int i,j,k,minn;
for( i=1;i<=n;i++)
{
d[i]=a[x][i];
p[i]=0;
}
p[x]=1;
for( k=1;k<n;k++)
{
minn=inf;
for( i=1;i<=n;i++)
if(!p[i] && minn>d[i]) {minn=d[i]; j=i;}
for( i=1;i<=n;i++)
if(!p[i] && d[i]>d[j]+a[j][i])
d[i]=d[j]+a[j][i];
p[j]=1;
}
}
int main()
{citire();
for(int i=1;i<=n;i++)
{
dijkstra(i);
for(int j=1;j<=n;j++)
a[i][j]=d[j];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
g<<a[i][j]<<" ";
g<<'\n';
}
return 0;
}