Advertisement
juyana

light oj 1099

Apr 29th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1.  
  2. #include<bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. #define mx 5005
  7.  
  8. vector<long long>edge[mx],cost[mx];
  9.  
  10. const long long infinity = 1000000000;
  11.  
  12. int dis[2][mx];
  13. //bool vis[2][mx];
  14.  
  15. void dijkstra(int des)
  16. {
  17.  
  18. priority_queue< pair<int,pair<long long,long long> > >pq;
  19.  
  20. pq.push(make_pair(1,make_pair(0,1)));
  21. dis[1][1]=0;
  22. while(!pq.empty())
  23. {
  24. int f=pq.top().first;
  25. int u=pq.top().second.second;
  26. pq.pop();
  27. // if(vis[f][u])
  28. // continue;
  29. // vis[f][u]=true;
  30. long long ucost=dis[f][u];
  31. for(long long i=0; i<edge[u].size(); i++)
  32. {
  33. long long v=edge[u][i];
  34. long long vcost=cost[u][i]+ucost;
  35. if(dis[1][v]>vcost)
  36. {
  37. dis[2][v]=dis[1][v];
  38. pq.push(make_pair(2,make_pair(-dis[2][v],v)));
  39. dis[1][v]=vcost;
  40. pq.push(make_pair(1,make_pair(-dis[1][v],v)));
  41.  
  42. }
  43. else if(vcost>dis[1][v]&&vcost<dis[2][v])
  44. {
  45. dis[2][v]=vcost;
  46. pq.push(make_pair(2,make_pair(-dis[2][v],v)));
  47. }
  48. }
  49. }
  50. }
  51. int main()
  52. {
  53. int n,m,u,v,c,test;
  54. cin>>test;
  55. for(long long j=1; j<=test; j++)
  56. {
  57. cin>>n>>m;
  58. for(int i=1; i<mx; i++)
  59. {
  60.  
  61. dis[1][i]= dis[2][i] = infinity;
  62. //vis[1][i]=false;
  63. // vis[2][i]=false;
  64. }
  65. for(long long i=0; i<m; i++)
  66. {
  67. cin>>u>>v>>c;
  68. edge[u].push_back(v);
  69. cost[u].push_back(c);
  70. edge[v].push_back(u);
  71. cost[v].push_back(c);
  72. }
  73.  
  74.  
  75. dijkstra(n);
  76. cout<<"Case "<<j<<": "<<dis[2][n]<<endl;
  77. for(long long k=0; k<mx; k++)
  78. {
  79. edge[k].clear();
  80. }
  81. for(long long k=0; k<mx; k++)
  82. {
  83. cost[k].clear();
  84. }
  85. }
  86.  
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement