Submission #1282965

#TimeUsernameProblemLanguageResultExecution timeMemory
1282965dhuyyyyPower Plant (JOI20_power)C++20
100 / 100
151 ms28224 KiB
 #include<bits/stdc++.h>
#define fi first
#define se second
#define int long long
using namespace std;

using ll = long long;
using ii = pair<int, int>;
using aa = array<int,4>;

const int N = 2e5+5;
const ll INF = 1e18;
const int MOD = 1e9+7;
const int base = 31;

int n, u, v, ans = 0;

int gen[N], dp[N];

char c;

vector <int> adj[N];

void dfs(int u,int p){
    for (int it : adj[u]){
        if (it == p) continue;
        dfs(it,u);
        dp[u] += dp[it];
        ans = max(ans,dp[it] + gen[u]);
    }
    dp[u] = max(dp[u] - gen[u],gen[u]);
    ans = max(ans,dp[u]);
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
    cin >> n;
    for (int i = 1; i < n; i++){
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    for (int i = 1; i <= n; i++){
        cin >> c;
        gen[i] = (c - '0');
    }
    dfs(1,0);
    cout << ans;
    return 0;
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...