Submission #660854

#TimeUsernameProblemLanguageResultExecution timeMemory
660854Danilo21Power Plant (JOI20_power)C++14
0 / 100
14 ms23928 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define pb push_back #define fi first #define se second #define en '\n' #define sp ' ' #define tb '\t' #define ri(n) int n; cin >> n #define rl(n) ll n; cin >> n #define rs(s) string s; cin >> s #define rc(c) char c; cin >> c #define rv(v) for (auto &x : v) cin >> x #define pven(v) for (auto x : v) cout << x << en #define pv(v) for (auto x : v) cout << x << sp; cout << en #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define yes cout << "YES" << en #define no cout << "NO" << en #define smin(a, b) a = min(a, b) #define smax(a, b) a = max(a, b) #define ssort(a, b) if (a < b) swap(a, b) #define bitcnt(a) (__builtin_popcountll(a)) #define bithigh(a) (63-__builtin_clzll(a)) #define lg bithigh #define highpow(a) (1LL << (ll)lg(a)) using namespace std; const ll LINF = 4e18; const int mxN = 1e6+10, INF = 2e9; int n, m, gen[mxN], dp[mxN]; vector<int> g[mxN]; int dfs(int s = 0, int p = -1){ int sum = 0, mx = 0; for (int u : g[s]){ if (u^p){ dfs(u, s); sum += dp[u]; smax(mx, dp[u]); } } dp[s] = max(sum - gen[s], gen[s]); return max(mx + gen[s], dp[s]); } void Solve(){ cin >> n; for (int i = 1; i < n; i++){ ri(u); ri(v); u--; v--; g[u].pb(v); g[v].pb(u); } rs(s); for (int i = 0; i < n; i++) gen[i] = (int)(s[i] - '0'); cout << dfs() << en; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cerr.tie(0); cout << setprecision(12) << fixed; cerr << setprecision(12) << fixed; cerr << "Started!" << endl; int t = 1; //cin >> t; while (t--) Solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...