Submission #359345

#TimeUsernameProblemLanguageResultExecution timeMemory
359345eyangchPower Plant (JOI20_power)C++17
100 / 100
192 ms28396 KiB
#include <bits/stdc++.h> #define endl "\n" using namespace std; int N; vector<int> graph[200000]; char s[200001]; bool vis[200000]; int ans = 0; int dfs(int id, int par){ assert(!vis[id]); vis[id] = true; int p = s[id] - '0'; int ret = p; int c = 0; int mxc = 0; for(int i : graph[id]){ if(i == par) continue; int cur = dfs(i, id); if(cur == 0) continue; c++; mxc = max(mxc, cur); ret += cur; } if(p && c > 0){ if(c == 1){ ans = max(ans, ret); ret -= 2; }else{ ret -= 2; ans = max(ans, max(ret, mxc+1)); } } ans = max(ans, ret); return max(p, ret); } int32_t main(){ ios::sync_with_stdio(false); cin.tie(NULL); cin >> N; for(int i = 0; i < N-1; i++){ int a, b; cin >> a >> b; graph[a-1].push_back(b-1); graph[b-1].push_back(a-1); } cin >> s; dfs(0, 0); cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...