This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
// #define endl '\n'
#define all(x) x.begin(),x.end()
#define sz(x) ((int)x.size())
#define x first
#define y second
#define pb push_back
#define ppb pop_back
#define pf push_front
#define ppf pop_front
#define ll long long
#define ld long double
#define ii pair<int, int>
#define iii pair<int, ii>
#define vi vector<int>
using namespace std;
const int ms = 2e5+100;
const int sigma = 30;
int n, m, k, t;
int pres[ms];
vi g[ms];
set<int> nec;
set<int> res;
map<ii, int> id;
map<int, int> h;
bool get_ans(int a, int p){
bool ans = 0;
for(auto x: g[a]){
if(x==p) continue;
bool aux = get_ans(x, a);
ans= ans|| aux;
if(aux){
h[id[{a, x}]]++;
if(h[id[{a, x}]]>=k){
res.insert(id[{a, x}]);
}
}
}
return ans || nec.count(a);
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m>>k;
int a, b, qt;
for(int i=0; i<n-1; i++){
cin>>a>>b;
g[a].pb(b);
g[b].pb(a);
id[{a, b}] = id[{b, a}] = i;
}
for(int i=0; i<m; i++){
cin>>qt;
nec.clear();
while(qt--){
cin>>a;
nec.insert(a);
}
get_ans(a, -1);
}
cout<<res.size()<<endl;
for(auto x: res){
cout<<x+1<<' ';
}
}
# | 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... |