Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define mk make_pair
  4. #define debug(x) cerr << #x << " = " << x << endl;
  5. #define debugV(x,n) for(int i = 0;i < n;i++) cerr << x[i] << " "; cerr<<endl;
  6. #define rep(i,a,b) for(int i = (int)a;i < (int)b;i++)
  7. #define F first
  8. #define S second
  9. #define pb push_back
  10. typedef pair<int,int> ii;
  11. typedef long long int ll;
  12. const int INF = 0x3f3f3f3f;
  13. const double EPS = 1e-5;
  14.  
  15. vector < pair<ll,int> > adj[10010];
  16. int n,m;
  17.  
  18. ll dist[10010];
  19.  
  20. ll dijkstra(){
  21.     priority_queue <pair <ll,int> > pq;
  22.     rep(i,0,n+2){
  23.         dist[i] = INF;
  24.     }
  25.     dist[1]=0;
  26.     pq.push(mk(-dist[1],1));
  27.     while(!pq.empty()){
  28.         int u = pq.top().S;
  29.         pq.pop();
  30.         if(u == n) return dist[u];
  31.         rep(i,0,adj[u].size()){
  32.             int v = adj[u][i].F;
  33.             ll cost = adj[u][i].S+dist[u];
  34.             if(dist[v] > cost){
  35.                 dist[v] = cost;
  36.                 pq.push(mk(-dist[v],v));
  37.             }
  38.         }
  39.     }
  40.     return dist[n];
  41. }
  42.  
  43. int main(){
  44.     int t,a,b,c;
  45.     scanf("%d",&t);
  46.     ll s=0;
  47.     while(t--){
  48.         scanf("%d%d",&n,&m);
  49.         rep(i,0,m){
  50.             scanf("%d%d%d",&a,&b,&c);
  51.             adj[a].pb(mk(b,c));
  52.         }
  53.         s+=dijkstra();
  54.         rep(i,0,n+2)adj[i].clear();
  55.     }
  56.     printf("%lld\n",s);
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement