Submission #1209341

#TimeUsernameProblemLanguageResultExecution timeMemory
1209341irmuunSpring cleaning (CEOI20_cleaning)C++20
0 / 100
1094 ms11872 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() const ll N=2e5+5; ll n,q,sub[N],par[N],even=0; vector<ll>g[N]; void recalc(ll x){ if(sub[x]%2==0) even--; sub[x]=(g[x].size()==1&&x==1?1:0); for(ll y:g[x]){ if(y!=par[x]){ sub[x]+=sub[y]; } } if(sub[x]%2==0) even++; } void find_par(ll x,ll p){ par[x]=p; for(ll y:g[x]){ if(y!=p){ find_par(y,x); } } } void dfs(ll x,ll p){ sub[x]=0; if(g[x].size()==1) sub[x]=1; for(ll y:g[x]){ if(y!=p){ dfs(y,x); sub[x]+=sub[y]; } } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>q; for(ll i=1;i<n;i++){ ll u,v; cin>>u>>v; g[u].pb(v); g[v].pb(u); } find_par(1,1); dfs(1,1); for(ll i=2;i<=n;i++){ if(sub[i]%2==0){ even++; } } while(q--){ ll d; cin>>d; vector<ll>a(d); for(ll i=0;i<d;i++){ cin>>a[i]; g[a[i]].pb(n+i+1); g[n+i+1].pb(a[i]); sub[n+i+1]++; ll x=a[i]; do{ recalc(x); x=par[x]; }while(x!=1); } if(sub[1]&1){ cout<<-1<<"\n"; } else{ cout<<even+n+d-1<<"\n"; } for(ll i=d-1;i>=0;i--){ g[a[i]].pop_back(); g[n+i+1].pop_back(); sub[n+i+1]=0; ll x=a[i]; do{ recalc(x); x=par[x]; }while(x!=1); } } }
#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...