Pagini recente » Cod sursa (job #843368) | Cod sursa (job #82447) | Cod sursa (job #110772) | Cod sursa (job #2047336) | Cod sursa (job #1905988)
#include<bits/stdc++.h>
#define N 50020
using namespace std;
typedef long long LL;
vector <pair<int,int> > lda[N];
int v[N];
priority_queue<pair<int, int> > q;
int main(){
int n, m, e[N];
int x, y, d;
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
scanf("%d%d", &n, &m);
while(m--){
scanf("%d%d%d", &x, &y, &d);
lda[x].push_back({y, d});
lda[y].push_back({x, d});
}
for(int i=1;i<=n;i++)e[i]=1e6;
e[1]=0;
q.push({0, 1});
while(!q.empty()){
int a=q.top().second;
q.pop();
if(v[a]) continue;
v[a]=1;
int l=lda[a].size();
for(int i=0;i<l;i++){
int nod=lda[a][i].first;
if(e[nod] > e[a]+lda[a][i].second) {
e[nod]=e[a]+lda[a][i].second;
q.push({-e[nod], nod});
}
}
}
for(int i=2;i<=n;i++)printf("%d ", e[i]);
return 0;
}