#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
using namespace std;
const int maxn = 1e5;
const int max_log = 20;
const int INF = 1e9;
int n, q, type[maxn + 10], tin[maxn + 10], tout[maxn + 10], h[maxn + 10], timer = 0;
int par[maxn + 10][max_log + 5];
ll dp[maxn + 10][2];
vector<int> adj[maxn + 10], mini_adj[maxn + 10], stk, v_list;
bool flag = 0;
void dfs(int top, int p = -1)
{
tin[top] = ++timer;
for (int next_top : adj[top])
{
if (next_top == p)
continue;
par[next_top][0] = top;
h[next_top] = h[top] + 1;
dfs(next_top, top);
}
tout[top] = timer;
}
void build_lca()
{
for (int j = 1; j <= max_log; j++)
for (int i = 1; i <= n; i++)
par[i][j] = par[par[i][j - 1]][j - 1];
}
bool is_par(int x, int y)
{
if (!tin[x])
return 1;
return tin[x] <= tin[y] && tin[y] <= tout[x];
}
int get_lca(int x, int y)
{
if (is_par(x, y))
return x;
if (is_par(y, x))
return y;
for (int j = max_log; j >= 0; j--)
if (!is_par(par[x][j], y))
x = par[x][j];
return par[x][0];
}
bool cmp(int a, int b)
{
return tin[a] < tin[b];
}
void build_mini_graph()
{
sort(v_list.begin(), v_list.end(), cmp);
int k = v_list.size();
for (int i = 1; i < k; i++)
v_list.push_back(get_lca(v_list[i - 1], v_list[i]));
sort(v_list.begin(), v_list.end(), cmp);
v_list.resize(unique(v_list.begin(), v_list.end()) - v_list.begin());
stk.clear();
for (int x : v_list)
{
while (stk.size() && !is_par(stk.back(), x))
stk.pop_back();
if (stk.size())
mini_adj[stk.back()].push_back(x);
stk.push_back(x);
}
}
void dp_on_tree(int top, int p = -1)
{
int cnt_v = 0;
ll sum_0 = 0;
ll sum_1 = 0;
ll mn = 0;
for (int next_top : mini_adj[top])
{
if (next_top == p)
continue;
dp_on_tree(next_top, top);
cnt_v += type[next_top] && (h[next_top] - h[top] == 1);
sum_0 += dp[next_top][0];
mn += min(dp[next_top][1] + 1, dp[next_top][0]);
sum_1 += min(dp[next_top][0], dp[next_top][1]);
}
if (type[top] && cnt_v)
flag = 1;
if (!type[top])
dp[top][0] = min(sum_0, sum_1 + 1);
else
dp[top][1] = 0;
for (int next_top : mini_adj[top])
{
if (next_top == p)
continue;
if (type[top])
dp[top][1] += min(dp[next_top][0], dp[next_top][1] + 1);
else if (cnt_v <= 1)
dp[top][1] = min(dp[top][1], mn - min(dp[next_top][0], dp[next_top][1] + 1) + dp[next_top][1]);
}
if (mini_adj[top].size() == 0 && top != v_list[0])
if (type[top])
dp[top][1] = 0;
else
dp[top][0] = dp[top][1] = 0;
// cout << top << ' ' << dp[top][0] << ' ' << dp[top][1], el;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("BODINH.INP", "r"))
{
freopen("BODINH.INP", "r", stdin);
freopen("BODINH.OUT", "w", stdout);
}
cin >> n;
for (int i = 1; i < n; i++)
{
int x, y;
cin >> x >> y;
adj[x].push_back(y);
adj[y].push_back(x);
}
dfs(1);
build_lca();
for (int i = 1; i <= n; i++)
dp[i][0] = dp[i][1] = INF;
cin >> q;
while (q--)
{
flag = 0;
int k;
cin >> k;
for (int i = 1; i <= k; i++)
{
int x;
cin >> x;
v_list.push_back(x);
type[x] = 1;
}
build_mini_graph();
dp_on_tree(v_list[0]);
if (flag)
cout << -1, el;
else
cout << min(dp[v_list[0]][0], dp[v_list[0]][1]), el;
for (int x : v_list)
{
// cout << x << ' ';
type[x] = 0;
dp[x][0] = dp[x][1] = INF;
mini_adj[x].clear();
}
v_list.clear();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsIGNvdXQgPDwgJ1xuJwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gMWU1Owpjb25zdCBpbnQgbWF4X2xvZyA9IDIwOwpjb25zdCBpbnQgSU5GID0gMWU5OwoKaW50IG4sIHEsIHR5cGVbbWF4biArIDEwXSwgdGluW21heG4gKyAxMF0sIHRvdXRbbWF4biArIDEwXSwgaFttYXhuICsgMTBdLCB0aW1lciA9IDA7CmludCBwYXJbbWF4biArIDEwXVttYXhfbG9nICsgNV07CmxsIGRwW21heG4gKyAxMF1bMl07CnZlY3RvcjxpbnQ+IGFkalttYXhuICsgMTBdLCBtaW5pX2FkalttYXhuICsgMTBdLCBzdGssIHZfbGlzdDsKYm9vbCBmbGFnID0gMDsKCnZvaWQgZGZzKGludCB0b3AsIGludCBwID0gLTEpCnsKICAgIHRpblt0b3BdID0gKyt0aW1lcjsKICAgIGZvciAoaW50IG5leHRfdG9wIDogYWRqW3RvcF0pCiAgICB7CiAgICAgICAgaWYgKG5leHRfdG9wID09IHApCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIHBhcltuZXh0X3RvcF1bMF0gPSB0b3A7CiAgICAgICAgaFtuZXh0X3RvcF0gPSBoW3RvcF0gKyAxOwogICAgICAgIGRmcyhuZXh0X3RvcCwgdG9wKTsKICAgIH0KICAgIHRvdXRbdG9wXSA9IHRpbWVyOwp9CnZvaWQgYnVpbGRfbGNhKCkKewogICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbWF4X2xvZzsgaisrKQogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICAgICAgcGFyW2ldW2pdID0gcGFyW3BhcltpXVtqIC0gMV1dW2ogLSAxXTsKfQpib29sIGlzX3BhcihpbnQgeCwgaW50IHkpCnsKICAgIGlmICghdGluW3hdKQogICAgICAgIHJldHVybiAxOwogICAgcmV0dXJuIHRpblt4XSA8PSB0aW5beV0gJiYgdGluW3ldIDw9IHRvdXRbeF07Cn0KaW50IGdldF9sY2EoaW50IHgsIGludCB5KQp7CiAgICBpZiAoaXNfcGFyKHgsIHkpKQogICAgICAgIHJldHVybiB4OwogICAgaWYgKGlzX3Bhcih5LCB4KSkKICAgICAgICByZXR1cm4geTsKICAgIGZvciAoaW50IGogPSBtYXhfbG9nOyBqID49IDA7IGotLSkKICAgICAgICBpZiAoIWlzX3BhcihwYXJbeF1bal0sIHkpKQogICAgICAgICAgICB4ID0gcGFyW3hdW2pdOwogICAgcmV0dXJuIHBhclt4XVswXTsKfQpib29sIGNtcChpbnQgYSwgaW50IGIpCnsKICAgIHJldHVybiB0aW5bYV0gPCB0aW5bYl07Cn0Kdm9pZCBidWlsZF9taW5pX2dyYXBoKCkKewogICAgc29ydCh2X2xpc3QuYmVnaW4oKSwgdl9saXN0LmVuZCgpLCBjbXApOwogICAgaW50IGsgPSB2X2xpc3Quc2l6ZSgpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBrOyBpKyspCiAgICAgICAgdl9saXN0LnB1c2hfYmFjayhnZXRfbGNhKHZfbGlzdFtpIC0gMV0sIHZfbGlzdFtpXSkpOwogICAgc29ydCh2X2xpc3QuYmVnaW4oKSwgdl9saXN0LmVuZCgpLCBjbXApOwogICAgdl9saXN0LnJlc2l6ZSh1bmlxdWUodl9saXN0LmJlZ2luKCksIHZfbGlzdC5lbmQoKSkgLSB2X2xpc3QuYmVnaW4oKSk7CiAgICBzdGsuY2xlYXIoKTsKICAgIGZvciAoaW50IHggOiB2X2xpc3QpCiAgICB7CiAgICAgICAgd2hpbGUgKHN0ay5zaXplKCkgJiYgIWlzX3BhcihzdGsuYmFjaygpLCB4KSkKICAgICAgICAgICAgc3RrLnBvcF9iYWNrKCk7CiAgICAgICAgaWYgKHN0ay5zaXplKCkpCiAgICAgICAgICAgIG1pbmlfYWRqW3N0ay5iYWNrKCldLnB1c2hfYmFjayh4KTsKICAgICAgICBzdGsucHVzaF9iYWNrKHgpOwogICAgfQp9CnZvaWQgZHBfb25fdHJlZShpbnQgdG9wLCBpbnQgcCA9IC0xKQp7CiAgICBpbnQgY250X3YgPSAwOwogICAgbGwgc3VtXzAgPSAwOwogICAgbGwgc3VtXzEgPSAwOwogICAgbGwgbW4gPSAwOwogICAgZm9yIChpbnQgbmV4dF90b3AgOiBtaW5pX2Fkalt0b3BdKQogICAgewogICAgICAgIGlmIChuZXh0X3RvcCA9PSBwKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBkcF9vbl90cmVlKG5leHRfdG9wLCB0b3ApOwogICAgICAgIGNudF92ICs9IHR5cGVbbmV4dF90b3BdICYmIChoW25leHRfdG9wXSAtIGhbdG9wXSA9PSAxKTsKICAgICAgICBzdW1fMCArPSBkcFtuZXh0X3RvcF1bMF07CiAgICAgICAgbW4gKz0gbWluKGRwW25leHRfdG9wXVsxXSArIDEsIGRwW25leHRfdG9wXVswXSk7CiAgICAgICAgc3VtXzEgKz0gbWluKGRwW25leHRfdG9wXVswXSwgZHBbbmV4dF90b3BdWzFdKTsKICAgIH0KICAgIGlmICh0eXBlW3RvcF0gJiYgY250X3YpCiAgICAgICAgZmxhZyA9IDE7CiAgICBpZiAoIXR5cGVbdG9wXSkKICAgICAgICBkcFt0b3BdWzBdID0gbWluKHN1bV8wLCBzdW1fMSArIDEpOwogICAgZWxzZQogICAgICAgIGRwW3RvcF1bMV0gPSAwOwogICAgZm9yIChpbnQgbmV4dF90b3AgOiBtaW5pX2Fkalt0b3BdKQogICAgewogICAgICAgIGlmIChuZXh0X3RvcCA9PSBwKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBpZiAodHlwZVt0b3BdKQogICAgICAgICAgICBkcFt0b3BdWzFdICs9IG1pbihkcFtuZXh0X3RvcF1bMF0sIGRwW25leHRfdG9wXVsxXSArIDEpOwogICAgICAgIGVsc2UgaWYgKGNudF92IDw9IDEpCiAgICAgICAgICAgIGRwW3RvcF1bMV0gPSBtaW4oZHBbdG9wXVsxXSwgbW4gLSBtaW4oZHBbbmV4dF90b3BdWzBdLCBkcFtuZXh0X3RvcF1bMV0gKyAxKSArIGRwW25leHRfdG9wXVsxXSk7CiAgICB9CiAgICBpZiAobWluaV9hZGpbdG9wXS5zaXplKCkgPT0gMCAmJiB0b3AgIT0gdl9saXN0WzBdKQogICAgICAgIGlmICh0eXBlW3RvcF0pCiAgICAgICAgICAgIGRwW3RvcF1bMV0gPSAwOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZHBbdG9wXVswXSA9IGRwW3RvcF1bMV0gPSAwOwovLyAgICBjb3V0IDw8IHRvcCA8PCAnICcgPDwgZHBbdG9wXVswXSA8PCAnICcgPDwgZHBbdG9wXVsxXSwgZWw7Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZiAoZm9wZW4oIkJPRElOSC5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oIkJPRElOSC5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJCT0RJTkguT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgY2luID4+IHggPj4geTsKICAgICAgICBhZGpbeF0ucHVzaF9iYWNrKHkpOwogICAgICAgIGFkalt5XS5wdXNoX2JhY2soeCk7CiAgICB9CiAgICBkZnMoMSk7CiAgICBidWlsZF9sY2EoKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICBkcFtpXVswXSA9IGRwW2ldWzFdID0gSU5GOwogICAgY2luID4+IHE7CiAgICB3aGlsZSAocS0tKQogICAgewogICAgICAgIGZsYWcgPSAwOwogICAgICAgIGludCBrOwogICAgICAgIGNpbiA+PiBrOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGs7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICBjaW4gPj4geDsKICAgICAgICAgICAgdl9saXN0LnB1c2hfYmFjayh4KTsKICAgICAgICAgICAgdHlwZVt4XSA9IDE7CiAgICAgICAgfQoKICAgICAgICBidWlsZF9taW5pX2dyYXBoKCk7CiAgICAgICAgZHBfb25fdHJlZSh2X2xpc3RbMF0pOwogICAgICAgIGlmIChmbGFnKQogICAgICAgICAgICBjb3V0IDw8IC0xLCBlbDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGNvdXQgPDwgbWluKGRwW3ZfbGlzdFswXV1bMF0sIGRwW3ZfbGlzdFswXV1bMV0pLCBlbDsKICAgICAgICBmb3IgKGludCB4IDogdl9saXN0KQogICAgICAgIHsKLy8gICAgICAgICAgICBjb3V0IDw8IHggPDwgJyAnOwogICAgICAgICAgICB0eXBlW3hdID0gMDsKICAgICAgICAgICAgZHBbeF1bMF0gPSBkcFt4XVsxXSA9IElORjsKICAgICAgICAgICAgbWluaV9hZGpbeF0uY2xlYXIoKTsKICAgICAgICB9CiAgICAgICAgdl9saXN0LmNsZWFyKCk7CiAgICB9Cn0K