Pagini recente » Cod sursa (job #2023895) | Cod sursa (job #1490256) | Cod sursa (job #331009) | Cod sursa (job #2308112) | Cod sursa (job #2282221)
#include <bits/stdc++.h>
using namespace std;
map<pair<int,int>,int> v;
vector<int> E[100005];
int D[100005];
struct Cmp{
bool operator()(const int &A,const int &B){
return D[A]>D[B];
}
};
void Djikstra(int k){
priority_queue<int,vector<int>,Cmp> Q;
Q.push(k);
D[k]=0;
while(!Q.empty()){
int X=Q.top();
for(auto it : E[X])
if(D[it]==0){
D[it]=D[X]+v[{X,it}];
Q.push(it);
}
Q.pop();
}
}
int main(){
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;++i){
int st,dr,len;
scanf("%d %d %d",&st,&dr,&len);
E[st].push_back(dr);
E[dr].push_back(st);
v.insert({{st,dr},len});
v.insert({{dr,st},len});
}
Djikstra(1);
for(int i=2;i<=n;++i)
printf("%d ",D[i]);
return 0;
}