#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7;
const int N=2e5+5;
int n,q,ans;
bool leaf[N];
vector<vector<int>> adja(N), adj(N);
int dfs2(int u,int p){
int leav=leaf[u];
for(auto v:adj[u]){
if(v==p) continue;
int x=dfs2(v,u);
ans+=2-(x%2);
leav+=x;
}
return leav;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> q;
for(int i=1; i<n; i++){
int u, v;
cin >> u >> v;
adja[u].emplace_back(v);
adja[v].emplace_back(u);
}
int __=1;
while(__++<=q){
int d;
cin >> d;
ans=0;
adj=adja;
int id=n;
for(int i=0; i<d; i++){
int u;
cin >> u;
adj[u].emplace_back(++id);
adj[id].emplace_back(u);
}
int rt=1;
for(int i=id; i>=1; i--){
if(adj[i].size()==1) leaf[i]=true;
else rt=i,leaf[i]=false;
}
int error=dfs2(rt,rt);
if(error%2) cout << -1 << "\n";
else cout << ans << "\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |