Submission #570017

#TimeUsernameProblemLanguageResultExecution timeMemory
570017OttoTheDinoPower Plant (JOI20_power)C++17
100 / 100
188 ms28008 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define rep(i,s,e)                  for (int i = s; i <= e; ++i)
#define pb                          push_back
typedef vector<int> vi;
 
const int mx=2e5;
vi adj[mx+1];
int ans = 0;
string s;
 
int dfs (int u, int p) {
    int x = 0, c = 0, ma = 0;
    for (int v : adj[u]) {
        if (v==p) continue;
        int res = dfs (v, u);
        if (res) {
            c++;
            x += res;
            ma = max(ma, res);
        }
    }
    if (s[u-1]=='1') {
        ans = max(ans, ma+1);
        if (c<2) ans = max(ans, x+1);
        x = max(x-1, 1);
    }
    ans = max(ans, x);
    return x;
}
 
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
 
    int n;cin>>n;
    rep(i,1,n-1){
       int u,v; cin>>u>>v;
       adj[u].pb(v);
       adj[v].pb(u);
    }
    cin >> s;
    dfs (1,0);
    cout << ans << "\n";
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...