sidlglove

Untitled

Nov 17th, 2018
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std ;
  3. #define ll long long
  4. #define mp make_pair
  5. vector<pair<int,int> > v[100009] ;
  6.  
  7. int dijkstra(int st,int dest)
  8. {
  9.    
  10.    
  11.     priority_queue<pair<int,int> , vector<pair<int,int> > , greater<pair<int,int> > > q;
  12.     int cost[101];
  13.     for(int i=0;i<101;i++)
  14.     cost[i]=100000000;
  15.     q.push(mp(0,st));
  16.     while(!q.empty())
  17.     {
  18.         pair<int,int> p;
  19.         p=q.top();
  20.         q.pop();
  21.         int c=p.first;
  22.         int nd=p.second;
  23.         if(c>cost[nd])
  24.          continue;
  25.         for(int i=0;i<v[nd].size();i++)
  26.         {
  27.             if(cost[v[nd][i].second]> (c+v[nd][i].first))
  28.             {
  29.               cost[v[nd][i].second]= c+v[nd][i].first;
  30.               q.push(mp(c+v[nd][i].first,v[nd][i].second));
  31.         }
  32.         }
  33.     }
  34.     return cost[dest];
  35.    
  36. }
  37.  
  38. int main(){
  39.     int n , e , x , y;
  40.     cin>>n>>e ;
  41.     int l , r , c ;
  42.     for(int i = 1;i<=e;i++){
  43.         cin>>l>>r>>c ;
  44.         v[l].push_back(make_pair(c,r)) ;
  45.         v[r].push_back(make_pair(c,l)) ;
  46.     }
  47.     cin>>x>>y ;
  48.     int c1 = dijkstra(1,x) , c2 = dijkstra(1,y) , c3 = dijkstra(x,y) , c4 = dijkstra(x,n) , c5 = dijkstra(y,n) ;
  49.     int ans = min(c1+ c3 + c5 , c2 + c3 + c4) ;
  50.     cout<<ans<<endl ;
  51. }
Add Comment
Please, Sign In to add comment