Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long int dis[100000],d,aaa;
  4. struct point
  5. {
  6. long long int name,val,road;
  7. bool operator<(const point &a)const
  8. {
  9. return a.val<val;
  10. }
  11. };
  12. struct node
  13. {
  14. long long int mm,nn,oo;
  15. };
  16. vector<node>mp[100000];
  17. vector<node>::iterator u;
  18. void dijkstra(point dublin)
  19. {
  20. priority_queue<point>pq;
  21. pq.push(dublin);
  22. while(!pq.empty())
  23. {
  24. point temp;
  25. temp=pq.top();
  26. pq.pop();
  27. if(temp.name==(aaa-1))
  28. {
  29. break;
  30. }
  31. long long int aa,b,c,x,z,y;
  32. node r;
  33. aa=temp.name;
  34. b=temp.val;
  35. c=temp.road;
  36. for(u=mp[aa].begin(); u!=mp[aa].end(); u++)
  37. {
  38. r=*u;
  39. x=r.mm;
  40. y=r.nn;
  41. z=r.oo;
  42. if(c+z<=d)
  43. {
  44. point zenit;
  45. zenit.name=x;
  46. zenit.val=b+y;
  47. zenit.road=c+z;
  48. dis[x]=min(dis[x],b+y);
  49. pq.push(zenit);
  50. }
  51.  
  52. }
  53. }
  54.  
  55. }
  56. int main ()
  57. {
  58. //freopen("in.txt","w",stdout);
  59. ios_base::sync_with_stdio(0);
  60. long long int n,i,b,c,j,x,y,z;
  61. cin>>n;
  62. for(i=1; i<=n; i++)
  63. {
  64. cin>>aaa>>b>>c>>d;
  65. for(j=1; j<=b; j++)
  66. {
  67. cin>>x>>y>>z;
  68. node tata;
  69. tata.mm=y;
  70. tata.nn=z;
  71. tata.oo=0;
  72. mp[x].push_back(tata);
  73. }
  74. for(j=1; j<=c; j++)
  75. {
  76. cin>>x>>y>>z;
  77. node tata;
  78. tata.mm=y;
  79. tata.nn=z;
  80. tata.oo=1;
  81. mp[x].push_back(tata);
  82. }
  83. for(j=1; j<aaa; j++)
  84. {
  85. dis[j]=1e17;
  86. }
  87. point get;
  88. get.name=0;
  89. get.val=0;
  90. get.road=0;
  91. dijkstra(get);
  92. if(dis[aaa-1]==1e17)
  93. {
  94. cout<<"Case "<<i<<": ";
  95. cout<<"Impossible"<<endl;
  96. }
  97. else
  98. {
  99. cout<<"Case "<<i<<": ";
  100. cout<<dis[aaa-1]<<endl;
  101. }
  102. for(j=0; j<aaa; j++)
  103. {
  104. mp[j].clear();
  105. }
  106. memset(dis,0,sizeof(dis));
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement