Submission #1304044

#TimeUsernameProblemLanguageResultExecution timeMemory
1304044mochaRailway (BOI17_railway)C++20
100 / 100
147 ms22440 KiB
#include <bits/stdc++.h> // #define int long long using namespace std; const int mx = 1e5+5; int n, m, k; vector<pair<int, int>> g[mx]; int pid[mx]; int pr[20][mx]; int dfn[mx]; int dep[mx]; int a[mx]; int sz; void dfs(int x, int p) { dfn[x] = ++sz; dep[x] = dep[p]+1; pr[0][x] = p; for (auto [v, id]:g[x]) { if (v == p) continue; pid[v] = id; dfs(v, x); } } bool cmp(int x, int y) { return dfn[x] < dfn[y]; } int lca(int x, int y) { if (dep[x] > dep[y]) swap(x, y); int d = dep[y] - dep[x]; for (int i=19;~i;i--) { if (d & (1<<i)) y = pr[i][y]; } if (x == y) return x; for (int i=19;~i;i--) { if (pr[i][x] != pr[i][y]) { x = pr[i][x]; y = pr[i][y]; } } return pr[0][x]; } vector<int> ans; void dfs2(int x, int p) { for (auto [i, id]:g[x]) { if (i == p) continue; dfs2(i, x); a[x] += a[i]; } if (a[x] >= 2*k) { ans.push_back(pid[x]); } } signed main() { cin >> n >> m >> k; for (int i=1;i<n;i++) { int u, v; cin >> u >> v; g[u].push_back({v, i}); g[v].push_back({u, i}); } dfs(1, 0); for (int i=1;i<20;i++) { for (int j=1;j<=n;j++) { pr[i][j] = pr[i-1][pr[i-1][j]]; } } // for (int i=1;i<=n;i++) { // cout << dfn[i] << " "; // } // cout << "owo\n"; for (int i=1;i<=m;i++) { int x; cin >> x; vector<int> ve; for (int j=1;j<=x;j++) { int y; cin >> y; ve.push_back(y); } sort(ve.begin(), ve.end(), cmp); ve.push_back(ve[0]); for (int i=0;i+1<ve.size();i++) { a[ve[i]]++; a[ve[i+1]]++; a[lca(ve[i], ve[i+1])]-=2; } } dfs2(1, 0); cout << ans.size() << "\n"; sort(ans.begin(), ans.end()); for (int i:ans) { cout << i << " "; } cout << "\n"; }
#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...