# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
342511 | leinad2 | Spring cleaning (CEOI20_cleaning) | C++17 | 1098 ms | 9324 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
int n, i, j, k, r, q, a, b, cnt, sz[100010], p[100010], ans;
vector<int>adj[100010];
void dfs(int v, int par)
{
p[v]=par;
sz[v]=0;
if(adj[v].size()==1)
{
sz[v]=1;
return;
}
for(int i=0;i<adj[v].size();i++)
{
int p=adj[v][i];
if(p==par)continue;
dfs(p, v);
sz[v]+=sz[p];
}
}
int main()
{
for(scanf("%d %d", &n, &q);++i<n;)
{
scanf("%d %d", &a, &b);
adj[a].push_back(b);
adj[b].push_back(a);
}
ans=n-1;
for(i=0;i++<n;)
{
if(adj[i].size()>1)
{
r=i;
break;
}
}
dfs(r, 0);
for(i=0;i++<n;)sz[i]%=2;
for(i=0;i++<n;)
{
if(sz[i]%2==0)ans++;
}
while(q--)
{
cnt=n;
vector<int>v;
scanf("%d", &a);
while(a--)
{
scanf("%d", &b);
ans++;
v.push_back(b);
adj[b].push_back(++cnt);
if(adj[b].size()==2)continue;
while(1)
{
sz[b]=1-sz[b];
if(sz[b]==0)ans++;
else ans--;
if(b==r)break;
b=p[b];
}
}
if(sz[r]%2)
{
puts("-1");
goto w;
}
printf("%d\n", ans-1);
w:;
for(i=0;i<v.size();i++)
{
b=v[i];
ans--;
adj[b].pop_back();
if(adj[b].size()==1)continue;
while(1)
{
sz[b]=1-sz[b];
if(sz[b]==0)ans++;
else ans--;
if(b==r)break;
b=p[b];
}
}
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |