fork(2) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.  
  6. int n,x,y,i,rng[n+9],parent[n+9],level[n+9],u1,q;
  7. scanf("%d",&n);
  8. vector<vector<int> >adj(n+1);
  9. vector<int>::iterator it;
  10. for(i=0;i<n-1;i++)
  11. {
  12. scanf("%d %d",&x,&y);
  13. adj[x].push_back(y);
  14. adj[y].push_back(x);
  15. }
  16.  
  17. bool visited[n+9];
  18. stack<int>myqueue;
  19. int s=1;
  20.  
  21. level[s]=1;
  22. for(i=1;i<=n;i++)
  23. {
  24. visited[i]=false;
  25. }
  26. for(i=1;i<=n;i++)
  27. {
  28. rng[i]=0;
  29. }
  30.  
  31. myqueue.push(s);
  32. visited[s]=true;
  33. while(!myqueue.empty())
  34. {
  35. s=myqueue.top();
  36. myqueue.pop();
  37. for(it=adj[s].begin();it<adj[s].end();it++)
  38. {
  39. if(visited[*it]==false)
  40. {
  41. level[*it]=level[s]+1;
  42. rng[s]++;
  43. visited[*it]=true;
  44. parent[*it]=s;
  45. myqueue.push(*it);
  46. }
  47. }
  48.  
  49.  
  50. }
  51. s=1;
  52. for(i=1;i<=n;i++)
  53. {
  54. visited[i]=false;
  55. }
  56.  
  57. myqueue.push(s);
  58. visited[s]=true;
  59. while(!myqueue.empty())
  60. {
  61. s=myqueue.top();
  62. myqueue.pop();
  63. for(it=adj[s].begin();it<adj[s].end();it++)
  64. {
  65. if(visited[*it]==false)
  66. {
  67. rng[*it]+=rng[s];
  68.  
  69. visited[*it]=true;
  70.  
  71. myqueue.push(*it);
  72. }
  73. }
  74.  
  75.  
  76. }
  77.  
  78. scanf("%d",&q);
  79. for(i=0;i<q;i++)
  80. {
  81. scanf("%d",&u1);
  82. printf("%d",rng[u1]-level[u1]+1);
  83.  
  84. }
  85. }
Runtime error #stdin #stdout 0s 4392KB
stdin
3
1 2
1 3
1
3 






stdout
Standard output is empty