Submission #1199418

#TimeUsernameProblemLanguageResultExecution timeMemory
1199418julia_08Railway (BOI17_railway)C++20
0 / 100
38 ms23200 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 10; int dp[20][MAXN], sum[MAXN]; int pre[MAXN], pos[MAXN]; vector<int> adj[MAXN]; int t = 0; void dfs_0(int v, int p){ pre[v] = ++t; for(auto u : adj[v]){ if(u != p){ dp[0][u] = v; dfs_0(u, v); } } pos[v] = t; } void dfs_1(int v, int p){ for(auto u : adj[v]){ if(u != p){ dfs_1(u, v); sum[v] += sum[u]; } } } int sub(int a, int b){ return pre[b] <= pre[a] && pos[a] <= pos[b]; } int lca(int a, int b){ if(sub(b, a)) return a; if(sub(a, b)) return b; for(int k=19; k>=0; k--){ if(!sub(dp[k][b], a)){ b = dp[k][b]; } } return dp[0][b]; } int main(){ cin.tie(0)->sync_with_stdio(0); int n, m, k; cin >> n >> m >> k; vector<pair<int, int>> edges; for(int i=1; i<n; i++){ int a, b; cin >> a >> b; edges.push_back({a, b}); adj[a].push_back(b); adj[b].push_back(a); } dp[0][1] = 1; dfs_0(1, 1); for(int k=1; k<20; k++){ for(int i=1; i<=n; i++){ dp[k][i] = dp[k - 1][dp[k - 1][i]]; } } while(m--){ int s; cin >> s; vector<pair<int, int>> vtx(s); for(int i=0; i<s; i++){ cin >> vtx[i].second; vtx[i].first = pre[vtx[i].second]; } sort(vtx.begin(), vtx.end()); vtx.push_back(vtx[0]); for(int i=1; i<=s; i++){ int c = lca(vtx[i - 1].second, vtx[i].second); sum[c] --; sum[dp[0][c]] --; sum[vtx[i - 1].second] ++; sum[vtx[i].second] ++; } } dfs_1(1, 1); vector<int> ans; for(int i=0; i<(int) edges.size(); i++){ if(sum[edges[i].first] >= 2 * k && sum[edges[i].second] >= 2 * k){ ans.push_back(i + 1); } } cout << (int) ans.size() << "\n"; for(auto x : ans) cout << x << " "; cout << "\n"; return 0; }
#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...