제출 #1134086

#제출 시각아이디문제언어결과실행 시간메모리
1134086tuongllPower Plant (JOI20_power)C++20
100 / 100
95 ms26296 KiB
// #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <utility> #include <cmath> #include <ctime> #include <cassert> #include <set> #include <stack> #include <map> #include <queue> #include <random> #include <chrono> #include <bitset> #include <array> using ll = long long; #define debug(x) cout << #x << " = " << x << '\n' #define separator "===============================================\n" #define all(a) a.begin(), a.end() #define SZ(a) (int)(a).size() using namespace std; const int mxn = 2e5 + 3; const ll mod = 1e9 + 7; const int inf32 = 2e9; const ll inf64 = 3e18; int n, dp[mxn], res = 0; string s; vector<int> g[mxn]; void dfs(int u, int pre){ for (int v : g[u]) if (v != pre){ dfs(v, u); dp[u] += dp[v]; res = max(res, dp[v] + (s[u] == '1')); } if (s[u] == '1'){ --dp[u]; dp[u] = max(dp[u], 1); } res = max(res, dp[u]); } void solve(){ cin >> n; for (int i = 1, u, v; i <= n - 1; ++i){ cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } cin >> s, s = " " + s; dfs(1, 0); cout << res; } int main(){ auto start = chrono::steady_clock::now(); ios_base::sync_with_stdio(false); cin.tie(NULL); int t = 1; // cin >> t; while(t--) solve(); chrono::duration<double> elapsed {chrono::steady_clock::now() - start}; cerr << "\n>> Runtime: " << elapsed.count() << "s\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...