#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector<ll>;
using vvl = vector<vll>;
using pll = pair<ll,ll>;
using vpl = vector<pll>;
using vvp = vector<vpl>;
#define f first
#define s second
#define pb push_back
#define all(v) v.begin(),v.end()
vll ed, sz;
vvp g;
void dfs(ll cr, ll pr){
for(pll i:g[cr]){
if(i.f!=pr){
dfs(i.f,cr);
sz[cr]+=sz[i.f];
if(sz[i.f]>0){
ed[i.s]++;
}
}
}
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(NULL);
ll n, m, k, a ,b, s;
cin >> n >> m >> k;
g = vvp(n);
for(ll i = 0; i < n-1; ++i){
cin >> a >> b;
a--;b--;
g[a].pb({b,i+1});
g[b].pb({a,i+1});
}
ed = vll(n);
for(ll i = 0; i < m; ++i){
sz = vll(n,0);
cin >> s;
while(s--){
cin >> a;a--;
sz[a]=1;
}
dfs(a,a);
}
vll ans;
for(ll i = 0; i < n-1; ++i){
if(ed[i]>=k)ans.pb(i);
}
cout << ans.size() << "\n";
for(ll i:ans)cout << i << " ";
}
# | 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... |