Submission #888483

#TimeUsernameProblemLanguageResultExecution timeMemory
888483SzypkiBillSpring cleaning (CEOI20_cleaning)C++17
0 / 100
1072 ms14536 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 = 3; 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); rep(i,q){ int d; cin>>d; vi a(d); int dojeden = 0; 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[x]++; } if((ilelisci)&1)cout<<-1<<'\n'; else cout<<n-1+d+ileparzystych<<'\n'; rep(j,d){ 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[x]--; } } }

Compilation message (stderr)

cleaning.cpp: In function 'int32_t main()':
cleaning.cpp:48:13: warning: unused variable 'dojeden' [-Wunused-variable]
   48 |         int dojeden = 0;
      |             ^~~~~~~
#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...