fork download
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. #define int long long
  4. using namespace std;
  5.  
  6.  
  7. void parental(int parent[],vector<bool>&visited,int start)
  8. {
  9. if(start==0)
  10. { visited[0]=true;
  11. return;
  12. }
  13. visited[start]=true;
  14.  
  15. parental(parent,visited,parent[start]);
  16. }
  17.  
  18. int32_t main()
  19. {
  20.  
  21. int n,q;
  22. cin>>n>>q;
  23. set<int>adj[n];
  24. for(int i=0;i<(n-1);i++)
  25. {
  26. int a,b;
  27. cin>>a>>b;
  28. adj[a-1].insert(b-1);
  29. adj[b-1].insert(a-1);
  30. }
  31. int parent[n];
  32. parent[0]=0;
  33. for(int i=1;i<n;i++)
  34. {
  35. parent[i]= *adj[i].begin();
  36.  
  37. }
  38.  
  39. vector<int>querys[q];
  40. for(int i=0;i<q;i++)
  41. {
  42. int k;
  43. cin>>k;
  44. for(int j=0;j<k;j++)
  45. {
  46. int y;
  47. cin>>y;
  48. querys[i].push_back(y-1);
  49. }
  50. }
  51.  
  52. for(int i=0;i<q;i++)
  53. { int maxi=0;
  54. for(int j=0;j<querys[i].size();j++)
  55. {
  56. if(querys[i][j]>maxi)
  57. {
  58. maxi = querys[i][j];
  59.  
  60. }
  61. }
  62. vector<bool>visited(n,false);
  63.  
  64. parental(parent,visited,maxi);
  65. int flag=0;
  66.  
  67.  
  68. for(int j=0;j<querys[i].size();j++)
  69. {
  70. if(!visited[parent[querys[i][j]]] )
  71. {
  72. flag=1;
  73. break;
  74. }
  75.  
  76. }
  77. if(flag==1)
  78. {
  79. cout<<"NO";
  80. }
  81. else
  82. {
  83.  
  84. cout<<"YES";
  85. }
  86. cout<<"\n";
  87. }
  88.  
  89.  
  90. return 0;
  91. }
Runtime error #stdin #stdout 0s 4520KB
stdin
Standard input is empty
stdout
Standard output is empty