hkshakib

Untitled

Apr 3rd, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef pair< ll, ll > pii;
  5. const ll MAX = 1024;
  6. const ll INF = 0x3f3f3f3f;
  7. vector< pii > G[MAX];
  8. ll d[MAX];
  9. void dijkstra(ll start)
  10. {
  11.     ll u, v, i, c, w;
  12.     priority_queue< pii, vector< pii >, greater< pii > > Q;
  13.     memset(d, INF, sizeof d);
  14.     Q.push(pii(0, start));
  15.     d[start] = 0;
  16.     while(!Q.empty())
  17.     {
  18.         u = Q.top().second;
  19.         Q.pop();
  20.         for(i = 0; i < G[u].size(); i++)
  21.         {
  22.             w = G[u][i].first;
  23.             v = G[u][i].second;
  24.             if(d[v] > max(d[u],w))
  25.             {
  26.                 d[v] = min(d[v],max(w,d[u]));
  27.                 Q.push(pii(d[v], v));
  28.             }
  29.         }
  30.     }
  31. }
  32.  
  33. int main()
  34. {
  35.     ll n, e, i, u, v, w, start,t,cas=1;
  36.     scanf("%lld",&t);
  37.     while(t--)
  38.     {
  39.         scanf("%lld %lld", &n, &e);
  40.         for(i = 0; i <= n; i++)
  41.             G[i].clear();
  42.         for(i = 0; i < e; i++)
  43.         {
  44.             scanf("%lld %lld %lld", &u, &v, &w);
  45.             G[u].push_back(pii(w, v));
  46.             G[v].push_back(pii(w, u));
  47.         }
  48.         scanf("%lld",&start);
  49.         dijkstra(start);
  50.         printf("Case %lld:\n", cas++);
  51.         for(int i=0; i<n; i++)
  52.         {
  53.             if(d[i] >= INF)
  54.                 printf("Impossible\n");
  55.             else
  56.                 printf("%lld\n",d[i]);
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment