Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define pb(x) push_back(x)
  4. #define m_p(x,y) make_pair(x,y)
  5. #define uu first
  6. #define vv second
  7.  
  8. int dis[105], vis[105],n;
  9. int dij(int x, vector<int>vec1[], vector<int>vec2[])
  10. {
  11. priority_queue<pair<int,int> > pq;
  12. pq.push({0, x}),dis[x]=0;
  13. while(!pq.empty())
  14. {
  15. pair<int, int> p=pq.top(); pq.pop();
  16. int u=p.vv;
  17. if(u==n) return dis[n];
  18. for(int i=0; i<vec1[u].size(); i++)
  19. {
  20. int v=vec1[u][i], w=vec2[u][i];
  21. if(dis[v]>dis[u]+w) dis[v]=dis[u]+w, pq.push({dis[v], v});
  22. }
  23. }
  24. return -1;
  25. }
  26. int main()
  27. {
  28. int t,z;
  29. scanf("%d",&t);
  30. for(z=1; z<=t; z++)
  31. {
  32. int i,j,k,l,x,y,u,v,m,w;
  33. scanf("%d %d",&n,&m);
  34. for(i=0; i<=n; i++) dis[i]=1e9;
  35. vector<int> vec1[105], vec2[105];
  36. for(i=0;i<m;i++)
  37. {
  38. scanf("%d%d%d",&u,&v,&w);
  39. vec1[u].pb(v), vec2[u].pb(w);
  40. vec1[v].pb(u), vec2[v].pb(w);
  41. }
  42. v=dij(1, vec1,vec2);
  43. if(v==-1) printf("Case %d: Impossible\n",z);
  44. else printf("Case %d: %d\n",z,v);
  45. }
  46. return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement