Pagini recente » Cod sursa (job #733800) | Cod sursa (job #2609134) | Cod sursa (job #932996) | Cod sursa (job #264373) | Cod sursa (job #3233161)
#include <bits/stdc++.h>
using namespace std;
int n,m;
vector<vector<pair<int,int>>>adj(50000);
int d[50000];
bool vis[50000];
struct cmp{
bool operator()(int a, int b){
return d[a] > d[b];
}
};
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
cin >> n >> m;
for(int i = 0;i<m;i++){
int a,b,c;
cin >> a >> b >> c;
a--;
b--;
adj[a].push_back({b,c});
adj[b].push_back({a,c});
}
priority_queue<int,vector<int>,cmp>pq;
for(int i = 0;i<n;i++){
d[i] = 1e9;
}
d[0] = 0;
vis[0] = 0;
pq.push(0);
while(pq.size()){
int nod = pq.top();
pq.pop();
vis[nod] = 0;
for(auto v : adj[nod]){
int vecin = v.first;
int dist = v.second;
if(d[nod] + dist < d[vecin]){
d[vecin] = d[nod] + dist;
if(!vis[vecin]){
vis[vecin] = 1;
pq.push(vecin);
}
}
}
}
for(int i =1;i<n;i++) cout << d[i]<<" ";
return 0;
}