이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |