Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define pb push_back
  4. #define mp make_pair
  5. #define fi first
  6. #define se second
  7. #define EPS 1e-7
  8. #define INF 2000000000
  9. const int MODN = 1e9 + 7;
  10. #define rep(i, n) for (int i = 0, _n = (int)(n); i < _n; i++)
  11. typedef long long ll;
  12. typedef pair<int, int> ii;
  13. typedef vector<int> vi;
  14. typedef vector<ii> vii;
  15.  
  16. int main(){
  17.     int T; scanf("%d",&T);
  18.     vector<vii> adjlist;
  19.     while(T--){
  20.         int v,e; scanf("%d %d",&v,&e);
  21.         adjlist.clear();
  22.         adjlist.resize(v+2,vii());
  23.         while(e--){
  24.             int f,t,w; scanf("%d %d %d",&f,&t,&w);
  25.             adjlist[f].pb(ii(t,w));
  26.         }
  27.         int a,b; scanf("%d %d",&a,&b);
  28.         vi dist(v+2, INF); dist[a]=0;
  29.         priority_queue<ii, vector<ii>, greater<ii> >pq; pq.push(ii(0,a));
  30.         while(!pq.empty()){
  31.             int u=pq.top().se;
  32.             int d=pq.top().fi;
  33.             pq.pop();
  34.             if(d>dist[u]) continue;
  35.             for(ii front:adjlist[u]){
  36.                 if(dist[u]+front.se<dist[front.fi]){
  37.                     dist[front.fi]=dist[u]+front.se;
  38.                     pq.push(ii(dist[front.fi],front.fi));
  39.                 }
  40.             }
  41.         }
  42.         if(dist[b]==INF) printf("NO\n");
  43.         else printf("%d\n", dist[b]);
  44.     }
  45.     return 0;
  46. }
  47. /*
  48.  
  49. 5
  50. 3 1 9 2 7
  51.  
  52. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement