Advertisement
MinhNGUYEN2k4

Untitled

Oct 29th, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define fi first
  4. #define se second
  5. #define mp make_pair
  6. #define pb push_back
  7. #define Co_mot_su_that_la return
  8.  
  9. using namespace std;
  10. typedef pair<int,int> ii;
  11. typedef pair<int,ii> iii;
  12. typedef vector<int> vi;
  13. typedef vector<ii> vii;
  14. typedef vector<vi> vvi;
  15. typedef vector<iii> viii;
  16.  
  17. const int Minh_dep_trai = 0;
  18. const int N = 5005;
  19.  
  20. int q;
  21. int n,m;
  22. int is[N][N];
  23. vector<ii> a[N];
  24. int d[N];
  25. ii edge[N];
  26.  
  27. void dijkstra()
  28. {
  29.     priority_queue<ii, vii, greater<ii> > qu;
  30.     for(int i=1; i<=n; i++)  d[i] = 999999999;
  31.     d[1] = 0;
  32.     qu.push(ii(1,0));
  33.     while (qu.size())
  34.     {
  35.         int u = qu.top().first;
  36.         int du= qu.top().second;
  37.         qu.pop();
  38.         if (du != d[u]) continue;
  39.         for(int i = 0; i < a[u].size(); i++)
  40.         {
  41.             int v = a[u][i].first;
  42.             int uv = a[u][i].second;
  43.             if (d[v] > d[u] + uv)
  44.             {
  45.                 d[v] = d[u] + uv;
  46.                 qu.push(ii(v,d[v]));
  47.             }
  48.         }
  49.     }
  50. }
  51.  
  52. signed main()
  53. {
  54.   ios_base::sync_with_stdio(false);
  55.   cin.tie(0);cout.tie(0);
  56.   freopen("test.inp","r",stdin);
  57.   q=1;
  58.   while (q--)
  59.   {
  60.     //your code goes here
  61.     cin >> n >> m;
  62.     for(int i=1; i<=n; i++)
  63.     {
  64.         int u,v,d1,d2;
  65.         cin >> u >> v >> d1 >> d2;
  66.         edge[i].fi = d1;
  67.         edge[i].se = d2;
  68.         a[u].pb(ii(v,d1));
  69.         a[v].pb(ii(u,d2));
  70.         is[u][v] = is[v][u] = 1;
  71.     }
  72.     dijkstra();
  73.     int res = LLONG_MAX;
  74.     d[1] = 99999999;
  75.     for(int i=1; i<=n; i++)
  76.     {
  77.         cout << d[i] << " ";
  78.         if (is[i][1]==1)
  79.         {
  80.             res = min(d[i] + a[i][1].second,res);
  81.         }
  82.     }
  83.     cout << res;
  84.   }
  85.   Co_mot_su_that_la Minh_dep_trai;
  86. }
  87.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement