Submission #1212557

#TimeUsernameProblemLanguageResultExecution timeMemory
1212557cpdreamerPower Plant (JOI20_power)C++20
100 / 100
79 ms31168 KiB
#include <bits/stdc++.h>
using namespace std;
const long long  INF = 1e12;
typedef long long ll;
const ll MOD=(ll) 998244353;
#define P pair
#define S second
#define F first
#define pb push_back
#define V vector
#define all(v) v.begin(),v.end()
void file() {
    freopen("input.txt.txt", "r", stdin);
    freopen("output.txt.txt", "w", stdout);
}
V<int>adj[(int)2e5+1];
int dp[(int)2e5+1][2][2];
string s;
void dfs(int n,int p){
    int maxd=0;
    int maxd1=0;
    int sum=0;
    for(auto u:adj[n]){
        if(u==p)continue;
        dfs(u,n);
        maxd=max(maxd,max(dp[u][0][0],dp[u][1][0]));
        maxd1=max(maxd1,max(dp[u][0][1],dp[u][1][1]));
        sum+=max(dp[u][0][1],dp[u][1][1]);
    }
    dp[n][0][0]=max(0,max(maxd,sum-(s[n]=='1')));
    dp[n][0][1]=max(0,sum-(s[n]=='1'));
    dp[n][1][1]=(s[n]=='1');
    dp[n][1][0]=max(0,maxd1+(s[n]=='1'));
}
void solve(){
    int n;
    cin>>n;
    for(int i=0;i<n-1;i++){
        int a,b;
        cin>>a>>b;
        adj[a].pb(b);
        adj[b].pb(a);
    }
    cin>>s;
    s='.'+s;
    for(int i=1;i<=n;i++){
        for(int j=0;j<2;j++){
            for(int g=0;g<2;g++){
                dp[i][j][g]=0;
            }
        }
    }
    dfs(1,-1);
    int ans=0;
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            ans=max(dp[1][i][j],ans);
        }
    }
    cout<<ans<<endl;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    //file();
    solve();
    return 0;
}

Compilation message (stderr)

power.cpp: In function 'void file()':
power.cpp:13:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |     freopen("input.txt.txt", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
power.cpp:14:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |     freopen("output.txt.txt", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...