Submission #163207

#TimeUsernameProblemLanguageResultExecution timeMemory
163207MinnakhmetovRailway (BOI17_railway)C++14
100 / 100
149 ms23852 KiB
#include <bits/stdc++.h> #define ll long long #define all(aaa) aaa.begin(), aaa.end() using namespace std; struct E { int to, i; }; const int N = 1e5 + 5, L = 19; int tin[N], tout[N], p[N][L], w[N]; int n, m, k, timer = 0; vector<E> g[N]; vector<int> ans; void dfs(int node) { tin[node] = ++timer; for (int i = 1; i < L; i++) { p[node][i] = p[p[node][i - 1]][i - 1]; } for (E e : g[node]) { if (e.to != p[node][0]) { p[e.to][0] = node; dfs(e.to); } } tout[node] = timer; } void dive(int node) { for (E e : g[node]) { if (e.to != p[node][0]) { dive(e.to); if (w[e.to] >= k) ans.push_back(e.i); w[node] += w[e.to]; } } } bool upper(int a, int b) { return tin[a] <= tin[b] && tout[a] >= tout[b]; } int getLca(int a, int b) { if (upper(a, b)) return a; for (int i = L - 1; i >= 0; i--) { if (!upper(p[a][i], b)) a = p[a][i]; } return p[a][0]; } signed main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cin >> n >> m >> k; for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; a--, b--; g[a].push_back({b, i}); g[b].push_back({a, i}); } dfs(0); for (int i = 0; i < m; i++) { int s; cin >> s; vector<int> v; for (int j = 0; j < s; j++) { int x; cin >> x; v.push_back(x - 1); } sort(all(v), [](int x, int y) { return tin[x] < tin[y]; }); for (int j = 0; j < v.size(); j++) { int h = (j + 1 == v.size() ? 0 : j + 1), lca = getLca(v[j], v[h]); w[v[j]]++; w[lca]--; } } dive(0); cout << ans.size() << "\n"; sort(all(ans)); for (int x : ans) cout << x + 1 << " "; return 0; }

Compilation message (stderr)

railway.cpp: In function 'int main()':
railway.cpp:89:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
      for (int j = 0; j < v.size(); j++) {
                      ~~^~~~~~~~~~
railway.cpp:90:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       int h = (j + 1 == v.size() ? 0 : j + 1),
                ~~~~~~^~~~~~~~~~~
#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...