Advertisement
a53

reinvent

a53
Sep 24th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define pb push_back
  4. #define pf push_front
  5. using namespace std;
  6. ifstream f("reinvent.in");
  7. ofstream g("reinvent.out");
  8. const int NMAX=100005;
  9. const int INF=100005;
  10. int n,m,k;
  11. vector<int> adj[NMAX];
  12. int dmin[NMAX],dmin2[NMAX];
  13. int ant[NMAX];
  14.  
  15. int main()
  16. {
  17. f>>n>>m>>k;
  18. for(int i=1; i<=m; i++)
  19. {
  20. int x,y;
  21. f>>x>>y;
  22. adj[x].pb(y);
  23. adj[y].pb(x);
  24. }
  25. for(int i=1; i<=n; i++)
  26. {
  27. dmin[i]=INF;
  28. dmin2[i]=INF;
  29. }
  30. queue<int> q;
  31. for(int i=1; i<=k; i++)
  32. {
  33. int x;
  34. f>>x;
  35. q.push(x);
  36. dmin[x]=0;
  37. ant[x]=x;
  38. }
  39. int sol=INF;
  40. while(!q.empty())
  41. {
  42. int node=q.front();
  43. for(auto x:adj[node])
  44. {
  45. int d=1+dmin[node];
  46. if(ant[x]!=ant[node])
  47. {
  48. sol=min(sol,dmin[x]+dmin[node]+1);
  49. }
  50.  
  51. if(d<dmin[x])
  52. {
  53. ant[x]=ant[node];
  54. dmin[x]=d;
  55. q.push(x);
  56. }
  57. }
  58. q.pop();
  59. }
  60. g<<sol;
  61. return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement