#include <bits/stdc++.h>
using namespace std;
#define __Master_Moon__ int main()
#define ll long long
#define el "\n"
#define fi first
#define sq(x) (x)*(x)
#define se second
#define pub push_back
#define puf push_front
#define pii pair <int, int>
#define pll pair <long long, long long>
#define piii pair <int, pair <int, int>>
#define iiii pair <int, pair <int, pair <int, int>>>
#define plll pair <long long, pair <long long, long long>>
#define FOR(i, a, b) for(ll i = (a);i <=(b);i++)
#define FO(i, a, b) for(int i = (a);i >= (b);i--)
#define REP(i, n) for(int i = 0;i < (n);i++)
long const maxn = 1e5 + 50;
long const lg = 22;
int n,m,k,timer,h[maxn],p[maxn][lg],id[maxn];
int a[maxn],in[maxn];
vector<pii> g[maxn];
vector<int> ans;
bool cmp(int u,int v)
{
return in[u] < in[v];
}
void dfs(int u,int par)
{
h[u] = h[par] + 1;
in[u] = ++timer;
for(pii x : g[u])
{
if(x.fi != par)
{
id[x.fi] = x.se;
p[x.fi][0] = u;
dfs(x.fi,u);
}
}
}
void dfs2(int u,int par)
{
for(pii x : g[u])
{
if(x.fi != par)
{
dfs2(x.fi,u);
a[u] += a[x.fi];
}
}
}
int lca(int u,int v)
{
if(h[u] < h[v]) swap(u,v);
int tmp = h[u] - h[v];
FO(i,20,0)
{
if(tmp >= (1<<i))
{
tmp -= (1<<i);
u = p[u][i];
}
}
if(u == v) return u;
FO(i,20,0)
{
if(p[u][i] != p[v][i])
{
u = p[u][i];
v = p[v][i];
}
}
return p[u][0];
}
void solve()
{
cin >> n >> m >> k;
REP(i,n-1)
{
int u,v;
cin >> u >> v;
g[u].pub({v,i});
g[v].pub({u,i});
}
dfs(1,0);
FOR(i,1,20) FOR(j,1,n) p[j][i] = p[p[j][i-1]][i-1];
REP(i,m)
{
vector<int> v;
int t;
cin >> t;
REP(i,t)
{
int tmp;
cin >> tmp;
v.pub(tmp);
}
sort(v.begin(),v.end(),cmp);
v.pub(v[0]);
int pre = 0;
for(int x : v)
{
if(pre != 0)
{
a[x]++;
a[pre]++;
a[lca(x,pre)]-=2;
}
pre = x;
}
}
dfs2(1,0);
FOR(i,1,n) if(a[i]/2 >= k) ans.pub(id[i]+1);
sort(ans.begin(),ans.end());
cout << ans.size() << el;
for(int x : ans) cout << x << ' ';
}
__Master_Moon__
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
| # | 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... |