제출 #1172399

#제출 시각아이디문제언어결과실행 시간메모리
1172399DanielPr8Railway (BOI17_railway)C++20
0 / 100
32 ms21168 KiB
#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; vpl ord; vvp g; void dfs(ll cr, ll pr){ ord.pb({cr, -1}); for(pll i:g[cr]){ if(i.f!=pr){ ord.back() = {cr, i.s}; dfs(i.f,cr); } } } 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}); g[b].pb({a,i}); } ll ms=0; for(ll i = 0; i < n; ++i){if(g[i].size()==1)ms=i;} dfs(ms, ms); vll pl(n); ed = vll(n-1); for(ll i = 0; i < n; ++i)pl[ord[i].f]=i; vll ac(n-1); for(ll i = 0; i < m; ++i){ ll mn = 1e9, mx = 0; cin >> s; while(s--){ cin >> a;a--; mx = max(mx, pl[a]); mn = min(mn, pl[a]); } ac[mn]++; ac[mx]--; } for(ll i = 0; i < n; ++i){ if(i>0)ac[i]+=ac[i-1]; ed[ord[i].s]=ac[i]; } vll ans; for(ll i = 0; i < n-1; ++i){ if(ed[i]>=k)ans.pb(i+1); } cout << ans.size() << "\n"; for(ll i:ans)cout << i << " "; }
#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...