Submission #888536

#TimeUsernameProblemLanguageResultExecution timeMemory
888536SzypkiBillSpring cleaning (CEOI20_cleaning)C++17
28 / 100
1075 ms14532 KiB
#include <bits/stdc++.h> #define int long long #define pii pair<int,int> #define all(x) x.begin(),x.end() #define vi vector<int> #define vii vector<pii> #define siz(x) (int)x.size() #define pb push_back #define rep(i,x) for(int i=0; i<x; i++) #define rep1(i,x) for(int i=1; i<=x; i++) using namespace std; const int inf = 1e9, maxn = 1e5+5, mod = 1e9+7; int n,q,ileparzystych,ilelisci,korzen = 1; int liscie[maxn]; bool parzyste[maxn]; int parent[maxn]; int aktsiz[maxn]; vi graf[maxn]; void DFS(int v, int p){ parent[v] = p; if(siz(graf[v])==1){liscie[v] = 1;ilelisci++;} for(auto u:graf[v])if(u!=p){ DFS(u,v); liscie[v]+=liscie[u]; } parzyste[v] = !(liscie[v]%2); if(parzyste[v] && v!=korzen)ileparzystych++; } int32_t main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>q; rep(i,n-1){ int a,b; cin>>a>>b; graf[a].pb(b); graf[b].pb(a); aktsiz[a]++; aktsiz[b]++; } DFS(korzen,0); // cout<<"pr ileparzystych: "<<ileparzystych<<" ilelisci: "<<ilelisci<<" "; for(int i=1; i<=n; i++)cout<<aktsiz[i]<<' ';cout<<'\n'; rep(i,q){ int d; cin>>d; vi a(d); rep(j,d){ cin>>a[j]; int x = a[j]; if(aktsiz[x] > 1)ilelisci++; if(aktsiz[x] > 1) while(x!=korzen){ parzyste[x] = !parzyste[x]; if(parzyste[x])ileparzystych++; else ileparzystych--; x = parent[x]; } aktsiz[a[j]]++; } // cout<<"in ileparzystych: "<<ileparzystych<<" ilelisci: "<<ilelisci<<" "; for(int i=1; i<=n; i++)cout<<aktsiz[i]<<' ';cout<<'\n'; if((ilelisci)&1)cout<<-1<<'\n'; else cout<<n-1+d+ileparzystych<<'\n'; rep(j,d){ int x = a[j]; aktsiz[x]--; if(aktsiz[x] > 1)ilelisci--; if(aktsiz[x] > 1) while(x!=korzen){ parzyste[x] = !parzyste[x]; if(parzyste[x])ileparzystych++; else ileparzystych--; x = parent[x]; } } // cout<<"po ileparzystych: "<<ileparzystych<<" ilelisci: "<<ilelisci<<" "; for(int i=1; i<=n; i++)cout<<aktsiz[i]<<' ';cout<<'\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...