Pagini recente » Cod sursa (job #3199818) | Cod sursa (job #215412) | Monitorul de evaluare | Cod sursa (job #5745) | Cod sursa (job #754137)
Cod sursa(job #754137)
#include <fstream>
#define inf 1<<30
#define LE 106
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int nod,que[LE],que2[LE],a[LE][LE],cost[LE],p,i,j,k2,k,n;
int nexT()
{
k=k2;
for(i=1; i<=k; ++i)
que[i]=que2[i];
}
int main()
{
f>>n;
for(i=1; i<=n; ++i)
for(j=1; j<=n; ++j)
f>>a[i][j];
for(nod=1; nod<=n; ++nod)
{
for(i=1;i<=n;++i) cost[i]=inf;
k2=0;
que[k=1]=nod;
cost[nod]=0;
do
{
k2=0;
for(p=1; p<=k; ++p)
for(i=1; i<=n; ++i)
if (a[que[p]][i]&&cost[i]>a[que[p]][i]+cost[que[p]])
{
cost[i]=a[que[p]][i]+cost[que[p]];
que2[++k2]=i;
}
nexT();
}
while(k2);
for(i=1;i<=n;++i)g<<cost[i]<<" ";
g<<'\n';
}
f.close();
g.close();
return 0;
}