Pagini recente » Cod sursa (job #1290615) | Cod sursa (job #2332937) | Cod sursa (job #2245837) | Cod sursa (job #1987588) | Cod sursa (job #2204362)
#include <iostream>
#include <set>
#include <fstream>
#include <vector>
#include <list>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n, m, x, y, c, viz[50001];
vector< list< pair<int, int > > > E;
vector<int> d;
set<pair<int, int> > Q;
int main(){
in >> n >> m;
E.resize(n+1);
d.resize(n+1, 1000000000);
for(int i=1;i<=m;i++){
in >> x >> y >> c;
E[x].push_back({y,c});
}
Q.insert({0,1});
d[1] = 0;
while(!Q.empty()){
int K = Q.begin()->second;
Q.erase(Q.begin());
viz[K] = 1;
for(auto &p : E[K]){
// cout << p.first << ' ';
if(d[p.first] > d[K] + p.second){
d[p.first] = d[K] + p.second;
Q.insert({d[p.first],p.first});
}
}
}
for(int i=2;i<=n;i++)
out << d[i] << ' ';
return 0;
}