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 <iostream>
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6+5;
int arr[MAXN];
int pref[MAXN];
vector<int> res;
map<pair<int,int>,int> m2;
vector<int> v1[MAXN];
map<int,int> m1;
int main(){
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<n;i++){
int x,y;
cin>>x>>y;
v1[x].push_back(y);
v1[y].push_back(x);
m2[make_pair(x,y)] = i;
m2[make_pair(y,x)] = i;
}
for(int i=1;i<=n;i++){
if(v1[i].size() == 1){
arr[1] = i;
break;
}
}
for(int i=1;i<n;i++){
for(int x:v1[i]){
if(x!=arr[i-1]){
arr[i+1] = x;
break;
}
}
}
for(int i=1;i<=n;i++){
m1[arr[i]] = i;
}
for(int i=1;i<=m;i++){
int num;
cin>>num;
int mn = 1e9;
int mx = 0;
for(int i=1;i<=num;i++){
int x;
cin>>x;
mn = min(mn,x);
mx = max(mx,x);
}
pref[mn]++;
pref[mx+1]--;
}
for(int i=1;i<=n;i++){
pref[i]+=pref[i-1];
}
for(int i=2;i<=n;i++){
if(pref[i]>=k && pref[i-1]>=k){
res.push_back(m2[make_pair(arr[i],arr[i-1])]);
}
}
cout<<res.size()<<endl;
for(auto x:res){
cout<<x<<" ";
}
}
# | 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... |