Submission #446274

# Submission time Handle Problem Language Result Execution time Memory
446274 2021-07-21T12:11:42 Z Jasiekstrz Svjetlo (COCI20_svjetlo) C++17
20 / 110
2000 ms 56572 KB
#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
const int N=5e5;
const int INF=1e9+7;
vector<int> e[N+10];
bool t[N+10];
pair<int,bool> dp0[N+10];
int dp1[N+10][2];
bool all[N+10];
void dfs1(int x,int p)
{
	for(auto v:e[x])
	{
		if(v!=p)
			dfs1(v,x);
	}

	all[x]=t[x];
	int sum=0;
	dp0[x]={0,0};
	for(auto v:e[x])
	{
		if(v==p)
			continue;
		if(!all[v])
		{
			sum+=dp0[v].se;
			dp0[x].fi+=dp0[v].fi;
			sum++;
			all[x]=false;
		}
	}
	if(all[x])
	{
		dp0[x]={0,0};
		dp1[x][0]=0;
		dp1[x][1]=0;
		return;
	}
	sum++;
	if(sum%2==t[x])
	{
		dp0[x].se=1;
		sum++;
	}
	dp0[x].fi+=sum;

	int mn[2]={INF,INF};
	mn[dp0[x].se]=0;
	for(auto v:e[x])
	{
		if(v==p)
			continue;
		mn[dp0[x].se]=min(mn[dp0[x].se],dp1[v][!dp0[v].se]-2*dp0[v].se-dp0[v].fi);
		mn[!dp0[x].se]=min(mn[!dp0[x].se],dp1[v][dp0[v].se]-2*dp0[x].se-dp0[v].fi);
	}
	dp1[x][0]=dp0[x].fi+mn[0];
	dp1[x][1]=dp0[x].fi+mn[1];
	return;
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		char c;
		cin>>c;
		t[i]=(c=='1');
	}
	for(int i=1;i<n;i++)
	{
		int a,b;
		cin>>a>>b;
		e[a].push_back(b);
		e[b].push_back(a);
	}
	int ans=INF;
	for(int i=1;i<=n;i++)
	{
		dfs1(i,0);
		ans=min(ans,dp1[i][0]);
	}
	cout<<ans<<"\n";
	return 0;
}

# Verdict Execution time Memory Grader output
1 Correct 8 ms 12060 KB Output is correct
2 Correct 7 ms 12044 KB Output is correct
3 Correct 7 ms 12064 KB Output is correct
4 Correct 7 ms 11980 KB Output is correct
5 Correct 7 ms 11980 KB Output is correct
6 Correct 7 ms 11988 KB Output is correct
7 Correct 7 ms 12060 KB Output is correct
8 Correct 7 ms 12012 KB Output is correct
9 Correct 7 ms 11980 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 2084 ms 56572 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2076 ms 36460 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 12060 KB Output is correct
2 Correct 7 ms 12044 KB Output is correct
3 Correct 7 ms 12064 KB Output is correct
4 Correct 7 ms 11980 KB Output is correct
5 Correct 7 ms 11980 KB Output is correct
6 Correct 7 ms 11988 KB Output is correct
7 Correct 7 ms 12060 KB Output is correct
8 Correct 7 ms 12012 KB Output is correct
9 Correct 7 ms 11980 KB Output is correct
10 Execution timed out 2084 ms 56572 KB Time limit exceeded
11 Halted 0 ms 0 KB -