Submission #1325303

#TimeUsernameProblemLanguageResultExecution timeMemory
1325303zwezdinvPower Plant (JOI20_power)C++20
100 / 100
64 ms20252 KiB
#include<bits/stdc++.h>

int main() {
    std::cin.tie(nullptr)->sync_with_stdio(false);

    int n;
    std::cin >> n;
    std::vector<std::vector<int>> adj(n);
    for (int i = 0; i < n - 1; ++i) {
        int u, v;
        std::cin >> u >> v;
        --u, --v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    std::string t;
    std::cin >> t;
    int ans = 0;
    auto dfs = [&](auto dfs, int u, int p) -> int {
        int s = 0;
        for (auto to : adj[u]) {
            if (to != p) {
                int c = dfs(dfs, to, u);
                ans = std::max(ans, c + (t[u] == '1'));
                s += c;
            }
        }
        return std::max<int>(s - (t[u] == '1'), t[u] == '1');
    };
    ans = std::max(ans, dfs(dfs, 0, -1));
    std::cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...