Pagini recente » Cod sursa (job #1551835) | Cod sursa (job #548957) | Cod sursa (job #2282779) | Cod sursa (job #970487) | Cod sursa (job #1489592)
#include <iostream>
#include <queue>
#include <vector>
#include <climits>
#include <cstdio>
using namespace std;
#define pi pair<int,int>
const int NMax = 50002;
vector< pi > G[NMax];
int n,m;
int uz[NMax] , d[NMax];
void dijkstra(int x){
int i;
priority_queue< pi , vector < pi > , greater< pi > > Heap;
for(i = 2; i <= n; i++)
d[i] = INT_MAX;
d[1] = 0;
Heap.push({0,1});
while(!Heap.empty()){
int from = Heap.top().second;
Heap.pop();
if(uz[from]) continue;
uz[from] = 1;
for(auto it : G[from]){
if(d[it.first] > d[from] + it.second ){
d[it.first] = d[from] + it.second;
Heap.push({d[it.first],it.first});
}
}
}
}
int main(){
int i;
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
cin>>n>>m;
int x,y,c;
for(i = 1; i <= m; i++){
cin>>x>>y>>c;
G[x].push_back({y,c});
G[y].push_back({x,c});
}
dijkstra(1);
for(i = 2; i <= n; i++){
if(d[i] == INT_MAX)
cout<<"0 ";
else
cout<<d[i]<<" ";
}
}