Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std ;
- #define ll long long
- #define mp make_pair
- vector<pair<int,int> > v[100009] ;
- int dijkstra(int st,int dest)
- {
- priority_queue<pair<int,int> , vector<pair<int,int> > , greater<pair<int,int> > > q;
- int cost[101];
- for(int i=0;i<101;i++)
- cost[i]=100000000;
- q.push(mp(0,st));
- while(!q.empty())
- {
- pair<int,int> p;
- p=q.top();
- q.pop();
- int c=p.first;
- int nd=p.second;
- if(c>cost[nd])
- continue;
- for(int i=0;i<v[nd].size();i++)
- {
- if(cost[v[nd][i].second]> (c+v[nd][i].first))
- {
- cost[v[nd][i].second]= c+v[nd][i].first;
- q.push(mp(c+v[nd][i].first,v[nd][i].second));
- }
- }
- }
- return cost[dest];
- }
- int main(){
- int n , e , x , y;
- cin>>n>>e ;
- int l , r , c ;
- for(int i = 1;i<=e;i++){
- cin>>l>>r>>c ;
- v[l].push_back(make_pair(c,r)) ;
- v[r].push_back(make_pair(c,l)) ;
- }
- cin>>x>>y ;
- int c1 = dijkstra(1,x) , c2 = dijkstra(1,y) , c3 = dijkstra(x,y) , c4 = dijkstra(x,n) , c5 = dijkstra(y,n) ;
- int ans = min(c1+ c3 + c5 , c2 + c3 + c4) ;
- cout<<ans<<endl ;
- }
Add Comment
Please, Sign In to add comment