MAGCARI

dijkstra

Aug 23rd, 2022 (edited)
785
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1. /*
  2.     Task        : Dijkstra
  3.     Author      : Phumipat C. [MAGCARI]
  4.     Language    : C++
  5. */
  6. #include<bits/stdc++.h>
  7. using namespace std;
  8. struct A{
  9.     int v,w;
  10.     bool operator < (const A&o) const{
  11.         return w>o.w;
  12.     }
  13. };
  14. priority_queue<A > heap;
  15. vector<A > g[100010];
  16. int dis[100010];
  17. int main(){
  18.     int n,m,u,v,w;
  19.     cin >> n >> m;
  20.     for(int i=1;i<=m;i++){
  21.         scanf("%d %d %d",&u,&v,&w);
  22.         g[u].push_back({v,w});
  23.         g[v].push_back({u,w});
  24.     }
  25.     for(int i=1;i<=n;i++)
  26.         dis[i] = 1e9;
  27.     dis[1] = 0;
  28.     heap.push({1,0});
  29.     while(!heap.empty()){
  30.         A now = heap.top();
  31.         heap.pop();
  32.         for(auto x:g[now.v]){
  33.             if(dis[x.v] > now.w + x.w){
  34.                 dis[x.v] = now.w + x.w;
  35.                 heap. Push({x.v,now.w+x.w});
  36.             }
  37.         }
  38.     }
  39.     printf("%d\n",dis[n]);
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment