# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1276269 | monaxia | Power Plant (JOI20_power) | C++20 | 146 ms | 27040 KiB |
#include <bits/stdc++.h>
#include <ext/random>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define pb push_back
#define ppb pop_back
#define fr first
#define sc second
#define all(v) v.begin(), v.end()
#define vektor vector
using namespace std;
// using namespace __gnu_pbds;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
constexpr ull Mod = 1e9 + 7;
constexpr ull Mod2 = 1 + 7 * 17 * (1 << 23);
constexpr ull sqr = 320;
constexpr ld eps = 1e-9;
int n, ans = 0;
vector <int> graph[200005];
int x[200005], dp[200005];
void dfs(int node, int pr, bool b){
dp[node] = -x[node];
for(auto& u : graph[node]){
if(u == pr) continue;
dfs(u, node, b | x[node]);
dp[node] += dp[u];
}
dp[node] = max(dp[node], x[node]);
ans = max(ans, dp[node] + b);
}
void solve(){
cin >> n;
for(int i = 1; i < n; i ++){
int u, v;
cin >> u >> v;
graph[u].pb(v);
graph[v].pb(u);
}
string ss;
cin >> ss;
for(int i = 1; i <= n; i ++) x[i] = ss[i - 1] - '0';
dfs(1, 0, 0);
cout << ans;
}
int main(){
// cout << 1; return 0;
ios_base::sync_with_stdio(false);
cin.tie(NULL);
if(fopen("TABLE.inp", "r")){
freopen("TABLE.inp", "r", stdin);
freopen("TABLE.out", "w", stdout);
}
ll t = 1;
// cin >> t;
while(t --){
solve();
cout << "\n";
}
cerr << "Code time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
}
// Whose eyes are those eyes?
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |