Submission #1148968

#TimeUsernameProblemLanguageResultExecution timeMemory
1148968cot7302Power Plant (JOI20_power)C++20
100 / 100
60 ms19332 KiB
#include <bits/stdc++.h> #define ALL(X) begin(X), end(X) using i64 = long long; using namespace std; template <class T> using vec = vector<T>; template <class T> istream& operator>>(istream& is, vec<T>& X) { for (auto& x : X) { is >> x; } return is; } template <class T> constexpr T infty = 0; template <> constexpr int infty<int> = 1'000'000'000; template <> constexpr i64 infty<i64> = 1'000'000'000'000'000'000; int main() { cin.tie(nullptr)->sync_with_stdio(false); int N; cin >> N; vec<vec<int>> g(N); for (int i = 0; i < N - 1; i++) { int u, v; cin >> u >> v; u -= 1, v -= 1; g[u].emplace_back(v); g[v].emplace_back(u); } string s; cin >> s; int ans{}; auto dfs = [&](auto&& dfs, int x, int pre) -> int { int sum{}, mx{}; for (auto to : g[x]) { if (to == pre) { continue; } int d = dfs(dfs, to, x); sum += d; mx = max(mx, d); } if (s[x] == '1') { ans = max(ans, mx + 1); ans = max(ans, sum - 1); } else { ans = max(ans, sum); } return max((int)(s[x] == '1'), max(mx, sum) - (s[x] == '1')); }; dfs(dfs, 0, -1); cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...