Submission #1229977

#TimeUsernameProblemLanguageResultExecution timeMemory
1229977RakhimovAmirSpring cleaning (CEOI20_cleaning)C++20
16 / 100
1095 ms12360 KiB
#pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; using ll = long long; inline void debugMode() { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif // ONLINE_JUDGE } const int N = 1e5 + 10; vector<int> v[N]; int c[N]; int res, root; void dfs(int x, int p) { c[x] = (v[x].size() <= 1); for (auto to : v[x]) { if (to == p) continue; dfs(to, x); c[x] += c[to]; } // cout << "x: " << x << " " << c[x] << "\n"; if (x != root) res += (c[x] % 2 == 1 ? 1 : 2); } void solve() { int n, q; cin >> n >> q; for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; v[a].push_back(b); v[b].push_back(a); } for (int i = 1; i <= n; i++) { if (v[i].size() > 1) { root = i; break; } } // cout << root << "\n"; while (q--) { int d; cin >> d; vector<int> g(d); int nw = n; for (auto &i : g) { cin >> i; v[i].push_back(++nw); } res = 0; dfs(root, root); cout << (c[root] % 2 == 1 ? -1 : res) << "\n"; for (auto i : g) { v[i].pop_back(); } } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // debugMode(); int $ = 1; // cin >> $; while ($--) { solve(); } }
#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...