Submission #602758

#TimeUsernameProblemLanguageResultExecution timeMemory
602758vanicSpring cleaning (CEOI20_cleaning)C++14
34 / 100
1100 ms17000 KiB
#include <cstdio> #include <algorithm> #include <vector> using namespace std; const int maxn=2e5+5; vector < int > ms[maxn]; int novi[maxn]; int sol; int root; int dfs(int x, int prosl){ int br=0; for(int i=0; i<(int)ms[x].size(); i++){ if(ms[x][i]!=prosl){ br+=dfs(ms[x][i], x); } } if(x==prosl){ if(br&1){ return 1; } return 0; } if(!br){ br++; } if(br&1){ sol++; } else{ sol+=2; } return br; } void rijesi(){ sol=0; if(dfs(root, root)){ printf("-1\n"); return; } printf("%d\n", sol); } void scan(int &a){ a=0; char c=getchar_unlocked(); while(c>='0' && c<='9'){ a*=10; a+=c-'0'; c=getchar_unlocked(); } } int main(){ int n, q; scan(n); scan(q); int a, b; for(int i=0; i<n-1; i++){ scan(a); scan(b); a--; b--; ms[a].push_back(b); ms[b].push_back(a); } for(int i=0; i<n; i++){ if(ms[i].size()>1){ root=i; break; } } int m; for(int i=0; i<q; i++){ scan(m); for(int j=0; j<m; j++){ scan(a); a--; ms[a].push_back(j+n); ms[j+n].push_back(a); novi[j*2]=a; novi[j*2+1]=j+n; } rijesi(); for(int j=0; j<m*2; j++){ ms[novi[j]].pop_back(); } } return 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...