Pagini recente » Cod sursa (job #914725) | Cod sursa (job #2361187) | Cod sursa (job #1993414) | Cod sursa (job #2043640) | Cod sursa (job #3214740)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector < pair<int , int> > l[1000001];
priority_queue <pair<int , int>> q;
int n;
int viz[100001],cost[100001]={0};
void dijkstra(){
q.push({0,1});
viz[q.top().second]=1;
while(!q.empty()){
int a=q.top().second,dist=-q.top().first;
q.pop();
if(cost[a]<dist) continue;
for(int i=0;i<l[a].size();i++){
if(viz[l[a][i].first]==0){
cost[l[a][i].first]=cost[a]+l[a][i].second;
viz[l[a][i].first]=1;
q.push({-cost[l[a][i].first] , l[a][i].first});
}
}
}
}
int main() {
int m;
fin>>n>>m;
int x,y,z;
for(int i=1;i<=m;i++){
fin>>x>>y>>z;
l[x].push_back({y,z});
}
dijkstra();
for(int i=2;i<=n;i++){
fout<<cost[i]<<" ";
}
return 0;
}