Pagini recente » Cod sursa (job #1446621) | Cod sursa (job #1644643) | Monitorul de evaluare | Cod sursa (job #2782024) | Cod sursa (job #1497813)
#include <iostream>
#include <fstream>
using namespace std;
unsigned short q,k=1,p,x,y,n,m,d[2500],v[10000],i,j;
short a[2500][2500];
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
void read()
{
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=-1;
for(i=1;i<=m;i++)
{
f>>x>>y;
f>>a[x][y];
}
}
void dijkstra()
{
v[1]=1;
for(i=2;i<=n;i++) d[i]=60000;
do
{
for(i=q+1;i<=q+k;i++)
for(j=1;j<=n;j++)
if(d[j]>d[v[i]]+a[v[i]][j] && a[v[i]][j]>=0)
{
d[j]=d[v[i]]+a[v[i]][j];
p++;
v[q+k+p]=j;
}
q+=k; k=p; p=0;
}while(k>0);
}
void afisare()
{
for(i=2;i<=n;i++)
{
if (d[i]==60000) g<<0<<" ";
else g<<d[i]<<" ";
}
g.close();
}
int main()
{
read();
dijkstra();
afisare();
return 0;
}