Submission #587377

#TimeUsernameProblemLanguageResultExecution timeMemory
587377MilosMilutinovicSpring cleaning (CEOI20_cleaning)C++14
34 / 100
1084 ms20572 KiB
/** * author: wxhtzdy * created: 01.07.2022 19:07:12 **/ #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, q; cin >> n >> q; const int MAX = 200000; vector<vector<int>> g(MAX); for (int i = 0; i < n - 1; i++) { int u, v; cin >> u >> v; --u; --v; g[u].push_back(v); g[v].push_back(u); } while (q--) { int d; cin >> d; vector<int> a(d); for (int i = 0; i < d; i++) { cin >> a[i]; --a[i]; g[a[i]].push_back(n + i); } vector<int> cnt(n + d); int ans = 0; function<void(int, int)> Dfs = [&](int v, int pr) { if ((int) g[v].size() <= 1) { cnt[v] += 1; } for (int u : g[v]) { if (u != pr) { Dfs(u, v); cnt[v] += cnt[u]; } } if (pr != -1) { ans += 2 - (cnt[v] % 2); } }; int root = 0; for (int i = 0; i < n; i++) { if ((int) g[i].size() > 1) { root = i; } } Dfs(root, -1); if (cnt[root] % 2 == 0) { cout << ans << '\n'; } else { cout << -1 << '\n'; } for (int i = 0; i < d; i++) { g[a[i]].pop_back(); } } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...