Submission #1160277

#TimeUsernameProblemLanguageResultExecution timeMemory
1160277Kaztaev_AlisherSpring cleaning (CEOI20_cleaning)C++20
28 / 100
1096 ms21064 KiB
#include <bits/stdc++.h> #define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) #define all(a) a.begin() , a.end() #define F first #define S second using namespace std; using ll = long long; const ll N = 2e5+5 , inf = 2e9 + 7; const ll INF = 1e18 , mod = 1e9+7; ll a[N] , b[N] , sz[N] , par[N] , cnt[N]; vector<int> g[N]; int ans = 0; void go(int v , int p){ par[v] = p; sz[v] = 0; for(int to : g[v]){ if(to != p){ go(to,v); sz[v] += sz[to]; } } if(g[v].size() == 1) sz[v] = 1; if(sz[v] % 2 == 0) ans++; } void add(int x , int kol , int p){ while(x > 0){ if(sz[x] % 2 == 0) ans--; sz[x] += kol; if(sz[x] % 2 == 0) ans++; x = par[x]; } } void solve(){ int n , q; cin >> n >> q; for(int i = 1; i < n; i++){ cin >> a[i] >> b[i]; g[a[i]].push_back(b[i]); g[b[i]].push_back(a[i]); } int bas = 1; for(int i = 1; i <= n; i++){ if(g[i].size() != 1){ bas = i; break; } } go(bas,0); while(q--){ int k; cin >> k; set<int> st; for(int i = 1; i <= k; i++){ int a; cin >> a; cnt[a]++; st.insert(a); } for(auto x : st){ add(x,cnt[x]-(g[x].size() == 1),0); } if(sz[bas] % 2 == 1) cout << "-1\n"; else cout << ans+n+k-2 << "\n"; for(auto x : st){ add(x,-(cnt[x]-(g[x].size() == 1)),0); cnt[x] = 0; } } } /* */ signed main(){ ios; 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...