Pagini recente » Cod sursa (job #518863) | Cod sursa (job #1605481) | Cod sursa (job #590885) | Cod sursa (job #2466075) | Cod sursa (job #923997)
Cod sursa(job #923997)
#include <fstream>
#include <queue>
#define pinf 1<<30
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct nod{
int info,c;
nod *next;
}*l[50001],*p;
queue<int> co;
int i,j,n,cost,x,y,d[50001],viz[50001],pr,u,m;
void dijkstra(int start )
{
pr=1;
u=1;
for(i=1;i<=n;++i)
d[i]=pinf;
d[start]=0;
viz[start]=1;
co.push(start);
while(pr<=u)
{
x=co.front();
co.pop();
p=new nod;
p=l[x];
while(p)
{
if(d[x]+p->c<d[p->info])
{
d[p->info]=d[x]+p->c;
co.push(p->info);
}
p=p->next;
}
}
}
int main()
{
fin>>n>>m;
for(i=1;i<=m;++i)
{
fin>>x>>y>>cost;
p=new nod;
p->info=y;
p->c=cost;
p->next=l[x];
l[x]=p;
}
dijkstra(1);
for(i=2;i<=n;++i)
if(d[i]!=pinf)
fout<<d[i]<<" ";
else
fout<<0<<" ";
return 0;
}