Submission #1063400

# Submission time Handle Problem Language Result Execution time Memory
1063400 2024-08-17T17:55:03 Z ThylOne Power Plant (JOI20_power) C++14
0 / 100
3 ms 5172 KB
//####################
//PowerPlant
//####################
#include<bits/stdc++.h>

using namespace std;
const int maxiN = 2*1e5;
bool isPowerPlant[maxiN];
vector<int> links[maxiN];
int dp[2][maxiN];
int ans = 0;
int solve(bool cm,int node,int dad=-1){
	if(dp[cm][node]!=-1)return dp[cm][node];
	if(cm){
		//avec malus !
		int malus = (cm && isPowerPlant[node]);
		int re = (isPowerPlant[node]);
		int sum = 0;
		for(int v:links[node])if(dad!=v){
			ans = max(ans, solve(1,v,node)+1);
			re = max(re, solve(1,v,node) - malus);
			sum += solve(1,v,node);
		}
		re = max(re, sum-malus);
		ans = max(ans,re);
		return dp[1][node] = re;
	}else{
		int re = (isPowerPlant[node]);
		int sum = 0;
		for(int v:links[node])if(dad!=v){
			ans = max(ans, solve(1,v,node)+1);
			re = max(re, solve(0,v,node));
			sum += solve(1,v,node);
		}
		re = max(re, sum);
		ans = max(ans,re);
		
		return dp[0][node] = re;
	}
}
signed main(){
	ios::sync_with_stdio(false);
	int n;cin>>n;
	for(int i = 1;i<n;i++){
		int a,b;cin>>a>>b;
		a--;
		b--;
		links[a].push_back(b);
		links[b].push_back(a);
	}
	fill(dp[0],dp[0]+n,-1);
	fill(dp[1],dp[1]+n,-1);
	string binary;cin>>binary;
	for(int i= 0;i<n;i++)isPowerPlant[i] = (binary[i]=='1');
	solve(0,0);
	
	cout<<ans<<endl;
	return 0;
};
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 2 ms 4956 KB Output is correct
4 Correct 2 ms 4956 KB Output is correct
5 Correct 2 ms 4960 KB Output is correct
6 Correct 2 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 2 ms 4956 KB Output is correct
9 Correct 2 ms 5172 KB Output is correct
10 Correct 3 ms 4956 KB Output is correct
11 Correct 2 ms 4956 KB Output is correct
12 Incorrect 2 ms 4956 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 2 ms 4956 KB Output is correct
4 Correct 2 ms 4956 KB Output is correct
5 Correct 2 ms 4960 KB Output is correct
6 Correct 2 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 2 ms 4956 KB Output is correct
9 Correct 2 ms 5172 KB Output is correct
10 Correct 3 ms 4956 KB Output is correct
11 Correct 2 ms 4956 KB Output is correct
12 Incorrect 2 ms 4956 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 2 ms 4956 KB Output is correct
4 Correct 2 ms 4956 KB Output is correct
5 Correct 2 ms 4960 KB Output is correct
6 Correct 2 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 2 ms 4956 KB Output is correct
9 Correct 2 ms 5172 KB Output is correct
10 Correct 3 ms 4956 KB Output is correct
11 Correct 2 ms 4956 KB Output is correct
12 Incorrect 2 ms 4956 KB Output isn't correct
13 Halted 0 ms 0 KB -