제출 #1302060

#제출 시각아이디문제언어결과실행 시간메모리
1302060duyanhchupapiPower Plant (JOI20_power)C++20
100 / 100
98 ms26104 KiB
#include <bits/stdc++.h>
using namespace std; 
using ll = long long; 
const int N = 2e5 + 5, inf = 2e9;
int n, ans, dp[N];
vector <int> g[N];
string s;

void dfs(int u, int p) {
	for (int v : g[u]) {
		if (v == p) continue;
		dfs(v, u);
		dp[u] += dp[v];
		ans = max(ans, dp[v] + s[u] - '0');
	}
	
	dp[u] = max(dp[u] - s[u] + '0', s[u] - '0');
	ans = max(ans, dp[u]);
}

int main() { 
	ios_base::sync_with_stdio(0); cin.tie(0);
	// freopen(".INP", "r", stdin);
	// freopen(".OUT", "w", stdout);
	
	cin >> n;
	for (int i=1;i<n;++i) {
		int u,v;
		cin >> u >> v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	cin >> s;
	s = '-' + s;
	dfs(1, 0);
	
	cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...