Pagini recente » Cod sursa (job #1259065) | Cod sursa (job #2675229) | Cod sursa (job #1969670) | Cod sursa (job #3188063) | Cod sursa (job #933563)
Cod sursa(job #933563)
//DIJKSTRA
#include <fstream>
#include <queue>
#define pinf 1<<30
#include <vector>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int,int> > l[50001];
vector<pair<int,int> >::iterator it;
queue<int> co;
int i,j,n,cost,x,y,d[50001],m,k;
void dijkstra(int start )
{
for(i=1;i<=n;++i)
d[i]=pinf;
d[start]=0;
co.push(start);
while(!co.empty())
{
x=co.front();
co.pop();
k=0;
for(it=l[x].begin();it!=l[x].end();it++,k++)
if(d[x]+l[x][k].second<d[l[x][k].first])
{
d[l[x][k].first]=d[x]+l[x][k].second;
co.push(l[x][k].first);
}
}
}
int main()
{
fin>>n>>m;
for(i=1;i<=m;++i)
{
fin>>x>>y>>cost;
l[x].push_back(make_pair(y,cost));
}
dijkstra(1);
for(i=2;i<=n;++i)
if(d[i]!=pinf)
fout<<d[i]<<" ";
else
fout<<0<<" ";
return 0;
}