Submission #977402

#TimeUsernameProblemLanguageResultExecution timeMemory
977402OAleksaSpring cleaning (CEOI20_cleaning)C++14
0 / 100
1057 ms19484 KiB
#include <bits/stdc++.h> #define f first #define s second using namespace std; const int N = 2e5 + 69; int n, q, ch[N], par[N], lf[N], is[N]; vector<int> g[N]; void dfs(int v, int p) { par[v] = p; if (g[v].size() == 1) ch[v] = lf[v] = is[v] = 1; for (auto u : g[v]) { if (u == p) continue; dfs(u, v); ch[v] += ch[u]; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> q; for (int i = 1;i <= n - 1;i++) { int a, b; cin >> a >> b; g[a].push_back(b); g[b].push_back(a); } dfs(1, 0); int uk = ch[1]; while (q--) { int t; cin >> t; int a[t]; for (int i = 0;i < t;i++) { cin >> a[i]; uk += 1; if (lf[a[i]]) { uk -= 1; lf[a[i]] = 0; } int v = a[i]; while (v != 0) { ch[v]++; v = par[v]; } } if (uk % 2 == 1) cout << "-1\n"; else { int ans = t; for (int i = 2;i <= n;i++) ans += (ch[i] % 2 == 0 ? 2 : 1); cout << ans << '\n'; } for (int i = 0;i < t;i++) { int v = a[i]; while (v != 0) { ch[v]--; v = par[v]; } uk -= 1; if (is[a[i]] && !lf[a[i]]) { lf[a[i]] = 1; uk += 1; } } } 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...