Submission #1245631

#TimeUsernameProblemLanguageResultExecution timeMemory
1245631mountainsaltSpring cleaning (CEOI20_cleaning)C++20
34 / 100
1096 ms25156 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int mod=1e9+7; const int N=2e5+5; int n,q,ans; bool leaf[N]; vector<vector<int>> adja(N), adj(N); int dfs2(int u,int p){ int leav=leaf[u]; for(auto v:adj[u]){ if(v==p) continue; int x=dfs2(v,u); ans+=2-(x%2); leav+=x; } return leav; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> q; for(int i=1; i<n; i++){ int u, v; cin >> u >> v; adja[u].emplace_back(v); adja[v].emplace_back(u); } int __=1; while(__++<=q){ int d; cin >> d; ans=0; adj=adja; int id=n; for(int i=0; i<d; i++){ int u; cin >> u; adj[u].emplace_back(++id); adj[id].emplace_back(u); } int rt=1; for(int i=id; i>=1; i--){ if(adj[i].size()==1) leaf[i]=true; else rt=i,leaf[i]=false; } int error=dfs2(rt,rt); if(error%2) cout << -1 << "\n"; else cout << ans << "\n"; } }
#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...