Advertisement
MinhNGUYEN2k4

ROADS || Dijkstra

Nov 5th, 2020 (edited)
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.43 KB | None | 0 0
  1. /*
  2.               .........
  3.             .'------.' |       Plug and Code
  4.            | .-----. | |
  5.            | |     | | |
  6.          __| |     | | |;. _______________
  7.         /  |*`-----'.|.' `;              //
  8.        /   `---------' .;'              //
  9.  /|   /  .''''////////;'               //
  10. |=|  .../ ######### /;/               //|
  11. |/  /  / ######### //                //||
  12.    /   `-----------'                // ||
  13.   /________________________________//| ||
  14.   `--------------------------------' | ||
  15.    : | ||      | || |__LL__|| ||     | ||
  16.    : | ||      | ||         | ||     `""'
  17.    n | ||      `""'         | ||
  18.    M | ||                   | ||
  19.      | ||                   | ||
  20.      `""'                   `""'
  21. Art stolen by NHHMinh
  22. Lang: C++ 98
  23. Problem:
  24. Sol:
  25.  */
  26. #include <bits/stdc++.h>
  27. #define int long long
  28. #define fi first
  29. #define se second
  30. #define mp make_pair
  31. #define pb push_back
  32. #define Co_mot_su_that_la return
  33.  
  34. using namespace std;
  35. typedef pair<int,int> ii;
  36. typedef pair<int,ii> iii;
  37. typedef vector<int> vi;
  38. typedef vector<ii> vii;
  39. typedef vector<vi> vvi;
  40. typedef vector<iii> viii;
  41.  
  42. const int Minh_dep_trai = 0;
  43. const int N = 105;
  44.  
  45. int q;
  46. int n,k,m;
  47. vector<iii> a[N];
  48. int d[N];
  49. int t[N];
  50.  
  51. void dijkstra()
  52. {
  53.     priority_queue<iii, viii, greater<iii> > qu;
  54.     for(int i=1; i<=n; i++) d[i] = 9999999;
  55.     d[1] = 0;
  56.     qu.push(iii(d[1],ii(1,0)));
  57.     while (qu.size())
  58.     {
  59.         int u = qu.top().second.first;
  60.         int du = qu.top().first;
  61.         int cost = qu.top().second.second;
  62.         qu.pop();
  63.         if (du != d[u]) continue;
  64.         for(auto i : a[u])
  65.         {
  66.             int v = i.second.second;
  67.             int uv = i.first;
  68.             int fee = i.second.first;
  69.             if (d[v] > d[u] + uv && fee+cost <= k)
  70.             {
  71.                 d[v] = d[u] + uv;
  72.                 qu.push(iii(d[v],ii(v,fee+cost)));
  73.             }
  74.         }
  75.     }
  76. }
  77.  
  78. signed main()
  79. {
  80.   ios_base::sync_with_stdio(false);
  81.   cin.tie(0);cout.tie(0);
  82.   freopen("test.inp","r",stdin);
  83.   //
  84.   cin >> q;
  85.   while (q--)
  86.   {
  87.     //your code goes here
  88.     cin >> k >> n >> m;
  89.     for(int i=1; i<=n; i++) a[i].clear();
  90.     for(int i=1; i<=m; i++)
  91.     {
  92.         int u,v,z,t;
  93.         cin >> u >> v >> z >> t;
  94.         a[u].pb(iii(z,ii(t,v)));
  95.     }
  96.     dijkstra();
  97.     if (d[n] != 9999999) cout << d[n] << '\n';
  98.     else cout << -1 << '\n';
  99.   }
  100.   Co_mot_su_that_la Minh_dep_trai;
  101. }
  102.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement