Pagini recente » Cod sursa (job #1703610) | Cod sursa (job #262243) | Cod sursa (job #260259) | Cod sursa (job #2388161) | Cod sursa (job #2594523)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
priority_queue<pair <int,int>,vector <pair < int,int>>,greater<pair < int,int>>> q;
int n,m,x,y,z,d[50005];
vector<pair <int ,int>> v[250005];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
d[i]=(1<<20);
}
for(int i=1;i<=m;i++){
cin>>x>>y>>z;
v[x].push_back({y,z});
}
d[1]=0;
q.push({0,1});
while(!q.empty()){
int nod=q.top().second;
q.pop();
if(d[nod]!=q.top().first){
continue;
}
for(auto x: v[nod]){
if(d[x.first]>d[nod]+x.second){
d[x.first]=d[nod]+x.second;
q.push({d[x.first],x.first});
}
}
}
for(int i=2;i<=n;i++){
if(d[i]==(1<<20)){
cout<<0<<" ";
}
else
cout<<d[i]<<" ";
}
return 0;
}