Submission #1112992

#TimeUsernameProblemLanguageResultExecution timeMemory
1112992vjudge1Spring cleaning (CEOI20_cleaning)C++17
9 / 100
1089 ms11196 KiB
//Dost SEFEROĞLU #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2") #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define ff first #define ss second #define sp << " " << #define vi vector<int> #define all(xx) xx.begin(),xx.end() #define ps(xxx) cout << (xxx) << endl; const int N = 1e5+1,inf = 1e16,MOD = 1e9+7; vi edges[N],chi(N,0),sublf(N,0),par(N); void dfs(int node,int p) { par[node] = p; for (auto it : edges[node]) { if (it == p) continue; chi[node]++; dfs(it,node); sublf[node]+=sublf[it]; } if (!chi[node]) sublf[node] = 1; } void solve() { int n,q; cin >> n >> q; vi deg(n+1,0); for (int i=1;i<=n-1;i++) { int a,b; cin >> a >> b; edges[a].push_back(b); edges[b].push_back(a); deg[a]++,deg[b]++; } int leaf = 0; int root = -1; for (int i=1;i<=n;i++) { if (deg[i] >= 2) { root = i; break; } } for (int i=1;i<=n;i++) if (deg[i] == 1) leaf++; dfs(root,root); vi v; while (q--) { int k; cin >> k; int ans = 0; for (int j = 1;j<=k;j++) { int x; cin >> x; v.push_back(x); if (chi[x]) { leaf++; int cur = x; while (cur != root) { sublf[cur]++; cur = par[cur]; } } chi[x]++; } for (int i=1;i<=n;i++) if (i != root) ans+=(sublf[i]%2==0); if (leaf%2) cout << -1 << '\n'; else cout << n+k-1+ans << '\n'; for (auto x : v) { int cur = x; if (chi[x]) { leaf--; while (cur != root) { sublf[cur]--; cur = par[cur]; } } chi[x]--; } v.clear(); } } signed main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #ifdef Dodi freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t = 1; //cin >> t; while (t --> 0) 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...