제출 #1004118

#제출 시각아이디문제언어결과실행 시간메모리
1004118vjudge1Railway (BOI17_railway)C++17
0 / 100
112 ms31696 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long 
#define f first
#define s second
#define pb push_back
#define pf push_front
#define pi pair<int,int>
#define vi vector<int>
const int MAX = 1e6+10;


vi g[MAX];

int main(){
    int n,m,k;
    cin >> n>>m>>k;
    pi coor[n];
    ll cnt[n];
    memset(cnt,0,sizeof(cnt));
    ll a,b;
    map<pi,int>mp;
    
    for(int i = 1; i < n; i++){
        cin >> a >>b;
        if(a>b)swap(a,b);
        if(mp.count({a,b})){
            g[mp[{a,b}]].pb(i);
        }
        else mp[{a,b}]= i;
        
        coor[i]={a,b};
    }
    
    
    int x,y;
    for(int i =0; i < m; i++){
        cin >> a ;
        while(a--){
            cin >> b;
            x = coor[b].f;
            y = coor[b].s;
            if(x>y) swap(x,y);
            cnt[mp[{x,y}]]++;
        }
    }
    
    vi ans;
    for(int i =0 ; i < n; i++){
        if(cnt[i]>=k){
            ans.pb(i);
            for(int j : g[i]){
                ans.pb(j);
            }
        }
    }
    sort(ans.begin(),ans.end());
    cout << ans.size() << endl;
    for(int i : ans){
        cout << i << " ";
    }
    cout << endl;
        
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...