답안 #359736

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
359736 2021-01-27T07:29:07 Z kuzma Power Plant (JOI20_power) C++17
0 / 100
3 ms 2668 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
 
typedef long long ll;
typedef long double ld;
#define int ll
#define f first
#define s second
#define pb push_back
#define vi vector<int>
#define pii pair<int, int>
using namespace std;

const int maxn = 1e5 + 50;
vi r[maxn];
int ans = 0;
int dp[maxn];
string s;
void dfs(int v, int p = -1) {
	dp[v] = -(s[v] - '0');
	for (auto &u : r[v]) {
		if (u != p) {
			dfs(u, v);
			dp[v] += max(int(s[u] - '0'), dp[u]);
		}
	}
}

void dfs2(int v, int p = -1) {
	ans = max(ans, int(s[v] - '0'));
	ans = max(ans, dp[v]);
	for (auto &u : r[v])
		if (u != p)
			ans = max(ans, dp[u] + (s[v] - '0'));
	for (auto &u : r[v]) {
		if (u != p) {
			dp[v] -= max(int(s[u] - '0'), dp[u]);
			dp[u] += max(int(s[v] - '0'), dp[v]);
			dfs2(u, v);
			dp[u] -= max(int(s[v] - '0'), dp[v]);
			dp[v] += max(int(s[u] - '0'), dp[u]);
		}
	}
}

void solve() {
	int n;
	cin >> n;
	for (int i = 0; i < n - 1; ++i) {
		int a, b;
		cin >> a >> b;
		a--;
		b--;
		r[a].pb(b);
		r[b].pb(a);
	}
	cin >> s;
	dfs(0);
	dfs2(0);
	cout << ans << '\n';
}

signed main() {
	// freopen("kthsubstr.in", "r", stdin);
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.precision(10);
	int t;
	t = 1;
	while (t--)
		solve();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2668 KB Output is correct
2 Correct 2 ms 2668 KB Output is correct
3 Correct 3 ms 2668 KB Output is correct
4 Correct 3 ms 2668 KB Output is correct
5 Correct 3 ms 2668 KB Output is correct
6 Correct 2 ms 2668 KB Output is correct
7 Correct 2 ms 2668 KB Output is correct
8 Incorrect 2 ms 2668 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2668 KB Output is correct
2 Correct 2 ms 2668 KB Output is correct
3 Correct 3 ms 2668 KB Output is correct
4 Correct 3 ms 2668 KB Output is correct
5 Correct 3 ms 2668 KB Output is correct
6 Correct 2 ms 2668 KB Output is correct
7 Correct 2 ms 2668 KB Output is correct
8 Incorrect 2 ms 2668 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2668 KB Output is correct
2 Correct 2 ms 2668 KB Output is correct
3 Correct 3 ms 2668 KB Output is correct
4 Correct 3 ms 2668 KB Output is correct
5 Correct 3 ms 2668 KB Output is correct
6 Correct 2 ms 2668 KB Output is correct
7 Correct 2 ms 2668 KB Output is correct
8 Incorrect 2 ms 2668 KB Output isn't correct
9 Halted 0 ms 0 KB -