#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> adj;
signed main(){
int n, q;cin>>n>>q;
bool isss1=true;
adj.resize(n+1);
for(int i = 0;i<n-1;i++){
int a,b;cin>>a>>b;
adj[a].push_back(b);
adj[b].push_back(a);
if(a!=1 && b!=1)isss1=false;
}
vector<int> values;
if(isss1){
vector<int> values;
for(int i = 0;i<q;i++){
int di;cin>>di;
values.assign(n, 0);
for(int i = 0;i<di;i++){
int a;cin>>a;
values[a]++;
}
int total=n-1;
int ie=0;
for(int i = 0;i<n;i++){
if(values[i]>=2)ie++;
total+=values[i]-(values[i]&1);
values[i]=values[i]&1;
if(values[i])total++;
}
if(n&1){
cout << total << '\n';
}
else{
if(ie){
cout << total+1 << '\n';
}
else{
cout << -1 << '\n';
}
}
}
return 0;
}
for(int i = 0;i<q;i++){
values.assign(n, 0);
int di;cin>>di;
for(int i = 0;i<di;i++){
int x;cin>>x;values[x-1]++;
}
int total=n-1;
vector<int> ones;
for(int i = 0;i<n;i++){
total+=values[i]-(values[i]&1);
values[i]=values[i]&1;
if(values[i]&1)ones.push_back(i);
}
if((int)ones.size()%2==1){
cout << -1 << '\n';
continue;
}
for(int i =0;i<ones.size();i+=2){
total+=ones[i+1]-ones[i]+2;
}
cout << total << '\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... |