#include <bits/stdc++.h>
using namespace std;
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")
#define pb push_back
#define ll long long
#define f first
#define s second
#define sz(v) int(v.size())
#define all(v) v.begin(),v.end()
int mod = 1e9 + 7;
const int N = 2e5;
const int inf = 1e9;
int up[N][20],tin[N],tout[N],d[N];
int timer;
vector <int> g[N];
vector <pair <int,int>> e;
void calc(int u,int p){
tin[u] = ++timer;
up[u][0] = p;
for(int i = 1; i < 20; i++){
up[u][i] = up[up[u][i - 1]][i - 1];
}
for(auto to : g[u]){
if(to == p) continue;
d[to] = d[u] + 1;
calc(to,u);
}
tout[u] = timer;
}
int pr(int u,int v){
return (tin[v] <= tin[u] && tout[v] >= tout[u]);
}
int lca(int u,int v){
if(pr(u,v)) return v;
if(pr(v,u)) return u;
for(int i = 19; i >= 0; i--){
if(!pr(v,up[u][i])) u = up[u][i];
}
return up[u][0];
}
int cnt[N],sz[N];
void dfs(int u,int p){
sz[u] = cnt[u];
for(auto to : g[u]){
if(to == p) continue;
dfs(to,u);
sz[u] += sz[to];
}
}
void solve(){
int n,m,k;
cin >> n >> m >> k;
for(int i = 1; i < n; i++){
int u,v;
cin >> u >> v;
e.pb({u,v});
g[u].pb(v),g[v].pb(u);
}
calc(1,1);
vector <pair<int,int>> st;
while(m--){
int d;
cin >> d;
while(d--){
int x;
cin >> x;
st.pb({tin[x],x});
}
sort(all(st));
st.pb(st[0]);
for(int i = 0; i < st.size() - 1; i++){
int u = st[i].s,v = st[i + 1].s;
int lc = lca(u,v);
cnt[u]++,cnt[v]++,cnt[lc] -= 2;
}
st.clear();
}
dfs(1,1);
vector <int> ans;
for(int i = 0; i < e.size(); i++){
int u = e[i].f,v = e[i].s;
if(d[u] > d[v]) swap(u,v);
if(sz[v] >= 2 * k) ans.pb(i + 1);
}
cout << ans.size() << '\n';
for(auto to : ans) cout << to << ' ';
}
signed main(){
//freopen("time.in", "r", stdin);
//freopen("time.out", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int t1 = 1;
while(t1--){
solve();
}
}
| # | 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... |