fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define pb push_back
  4. #define mp make_pair
  5. #define pii pair<int,int>
  6. #define maxx 5050
  7. #define inf 1000000
  8. int f[maxx];
  9. vector<pii>G[maxx];
  10. int dis[maxx];
  11. int main() {
  12.  
  13. int t;
  14. cin>>t;
  15. int temp=t;
  16. while(t--)
  17. {
  18. memset(dis,inf,sizeof dis);
  19. memset(f,0,sizeof f);
  20. int n,r;
  21. cin>>n>>r;
  22. while(r--)
  23. {
  24. int u,v,w;
  25. cin>>u>>v>>w;
  26. G[u].pb(mp(w,v));
  27. G[v].pb(mp(w,u));
  28. }
  29. dis[1]=0;
  30. priority_queue<pii,vector<pii>,greater<pii> >Q;
  31. Q.push(mp(0,1));
  32. while(!Q.empty())
  33. {
  34. int s=Q.top().second;
  35. Q.pop();
  36. for(int i=0;i<G[s].size();i++)
  37. {
  38. int V=G[s][i].second;
  39. int W=G[s][i].first;
  40. if(!f[V] && dis[V]>=dis[s]+W)
  41. {
  42. dis[V]=dis[s]+W;
  43. Q.push(mp(dis[V],V));
  44. }
  45. }
  46. f[s]=1;
  47. }
  48. printf("Case %d: %d\n",temp-t,dis[n]);
  49. }
  50. return 0;
  51. }
Success #stdin #stdout 0s 3332KB
stdin
2
3 3
1 2 100
2 3 200
1 3 50
4 4
1 2 100
2 4 200
2 3 250
3 4 100
stdout
Case 1: 50
Case 2: 150