Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void init()
- {
- dis[1] = 0;
- FOR(i,2,n)
- dis[i] = INF;
- }
- auto cmp = [&](int a, int b)->bool
- {
- if(dis[a] == dis[b]) return a < b;
- return dis[a] < dis[b];
- };
- set<int, decltype(cmp)> Q(cmp);
- void dijkstra()
- {
- int u; //aktualny wierzcholek
- while(!Q.empty())
- {
- u = *(Q.begin());
- Q.erase(u);
- for(Tunnel t : from[u])
- {
- if(dis[u] + t.cost < dis[t.to])
- {
- dis[t.to] = dis[u] + t.cost;
- Q.insert(t.to);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement