Submission #1143017

#TimeUsernameProblemLanguageResultExecution timeMemory
1143017owoovoPower Plant (JOI20_power)C++20
100 / 100
64 ms25924 KiB
#include<bits/stdc++.h>
#define ll long long 
#define F first 
#define S second 
using namespace std;
vector<int> e[200010];
int val[200010],dp[200010],ans,n;
int dfs(int now,int last){
    int sum=0,mx=0;
    for(auto x:e[now]){
        if(x==last)continue;
        int u=dfs(x,now);
        sum+=u;
        mx=max(mx,u);
    }
    if(val[now]==1){
        ans=max({ans,mx+1,sum-1});
        return max(sum-1,1);
    }else{
        ans=max(ans,sum);
        return max(sum,0);
    }
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    for(int i=1;i<n;i++){
        int a,b;
        cin>>a>>b;
        e[a].push_back(b);
        e[b].push_back(a);
    }
    for(int i=1;i<=n;i++){
        char c;
        cin>>c;
        val[i]=(c=='1');
    }
    dfs(1,1);
    cout<<ans<<'\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...