Advertisement
Guest User

vase davai opravi q i kaji kak posle

a guest
Jan 23rd, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include <cmath>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iostream>
  5. #include <algorithm>
  6. #include <queue>
  7. using namespace std;
  8.  
  9. #define INF 0x3f3f3f3f
  10. #define Element pair<int, int>
  11.  
  12. void addEdge(vector<pair<int, int>>adj[], int u, int v, int wt)
  13. {
  14.     adj[u].push_back(make_pair(v, wt));
  15.     adj[v].push_back(make_pair(u, wt));
  16. }
  17. vector<int> Dijkstra(vector<pair<int, int>>adj[], int s, int V)
  18. {
  19.     priority_queue<Element, vector<Element>, greater<Element>> pq;
  20.     pq.push(make_pair(0, s));
  21.     vector<int>dist(V, INF);
  22.     dist[s] = 0;
  23.     while (!pq.empty())
  24.     {
  25.         int v = pq.top().second;
  26.         for (auto i : adj[v])
  27.         {
  28.             int u = (i).first;
  29.             int weight = i.second;
  30.             if (dist[u] > dist[v] + weight)
  31.             {
  32.                 dist[u] = dist[v] + weight;
  33.                 pq.push(make_pair(dist[u], u));
  34.             }
  35.         }
  36.         pq.pop();
  37.     }
  38.     return dist;
  39. }
  40.  
  41.  
  42. int main() {
  43.     int n, m;
  44.     cin>>n>>m;
  45.     vector<pair<int, int>>gr[n];
  46.    
  47.     for(int i=0;i<m;i++)
  48.     {
  49.         int u, v, w;
  50.         cin>>u>>v>>w;
  51.         addEdge(gr, u-1, v-1, w);
  52.        
  53.     }
  54.     int s;
  55.     cin>>s;
  56.     vector<int>res=Dijkstra(gr, s-1, n);
  57.     for(auto el: res)
  58.     {
  59.         if(el!=0)
  60.         {
  61.              cout<<el<<" ";
  62.         }
  63.        
  64.     }
  65.     /* Enter your code here. Read input from STDIN. Print output to STDOUT */  
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement