Pagini recente » Cod sursa (job #869022) | Cod sursa (job #2879489) | Cod sursa (job #934779) | Cod sursa (job #1929821) | Cod sursa (job #1906001)
#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(make_pair(y, d));
lda[y].push_back(make_pair(x, d));
}
for(int i=1;i<=n;i++)e[i]=1e6;
e[1]=0;
q.push(make_pair(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(make_pair(-e[nod], nod));
}
}
}
for(int i=2;i<=n;i++)printf("%d ", e[i]);
return 0;
}