제출 #1163340

#제출 시각아이디문제언어결과실행 시간메모리
1163340tvgkPower Plant (JOI20_power)C++20
100 / 100
69 ms26376 KiB
#include<bits/stdc++.h>
using namespace std;
#define task "a"
#define se second
#define fi first
#define ll long long
#define ii pair<ll, ll>
const long mxN = 2e5 + 7;

int n, dp[mxN], ans;
string s;
bool vis[mxN];
vector<int> w[mxN];

void DFS(int j)
{
    vis[j] = 1;

    for (int i : w[j])
    {
        if (vis[i])
            continue;
        DFS(i);

        if (s[j] == '1')
            ans = max(ans, dp[i] + 1);
        dp[j] += dp[i];
    }

    if (s[j] == '1')
        dp[j] = max(dp[j] - 1, 1);
    ans = max(ans, dp[j]);
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    //freopen(task".INP", "r", stdin);
    //freopen(task".OUT", "w", stdout);

    cin >> n;
    for (int i = 1; i < n; i++)
    {
        int u, v;
        cin >> u >> v;
        w[u].push_back(v);
        w[v].push_back(u);
    }
    cin >> s;
    s = ' ' + s;

    ans = 0;
    DFS(1);
    cout << ans;
}

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