Advertisement
SwadTasnim

Problem_E

Jan 20th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long int
  3. #define SIZE 100005
  4. using namespace std;
  5.  
  6. vector<int>a[800002];
  7. int c,n,m,g,t,s,d,e,vis[800002],dis[800002];
  8.  
  9. ll gra(ll t,ll g)
  10. {
  11. memset(vis,0,sizeof(vis));
  12. for(int i=1; i<=n; i++)
  13. dis[i]=1000000000;
  14. queue<int> q;
  15. q.push(t);
  16. vis[t]=1;
  17. dis[t]=0;
  18. while(!q.empty())
  19. {
  20. int u=q.front();
  21. //cout<<"u= "<<u<<endl;
  22. q.pop();
  23. for(int k=0; k<a[u].size(); k++)
  24. { int v=a[u][k];
  25. if(dis[u]+1<dis[v])
  26. {dis[v]=dis[u]+1;
  27. //cout<<k<<" "<<dis[v]<<endl;
  28. //cout<<v<<endl;
  29. vis[v]=1;
  30. q.push(v);
  31. }
  32. }
  33. }
  34. return dis[g];
  35. }
  36. int main()
  37. {
  38. cin>>c;
  39. ll i=1;
  40. while(i<=c)
  41. { cin>>n>>m;
  42. ll cn[m];
  43. for(int j=1; j<=m; j++)
  44. {
  45. cin>>cn[j];
  46. }
  47. for(int j=1; j<=n; j++)
  48. {
  49. cin>>d>>e;
  50. a[d].push_back(e);
  51. a[e].push_back(d);
  52.  
  53. }
  54. cin>>t>>g;
  55. int mn=gra(t,g);
  56. if(vis[g])
  57. {
  58. if((cn[g]-mn)>0)
  59. cout<<"Case "<<i<<": "<<cn[g]-mn<<"\n";
  60. else
  61. cout<<"Case "<<i<<": Don't travel\n";
  62. }
  63. else
  64. cout<<"Case "<<i<<": Path not found\n";
  65.  
  66. i++;
  67. }
  68.  
  69.  
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement