Submission #1247830

#TimeUsernameProblemLanguageResultExecution timeMemory
1247830tralalero_tralalaPower Plant (JOI20_power)C++20
0 / 100
5 ms9800 KiB
#include <bits/stdc++.h> #define _ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define fore(i,a,b) for(lli i = (a), abcdxd = (b); i < abcdxd; i++) #define f first #define s second #define pb push_back #define ENDL '\n' #define sz(s) lli((s).size()) #define all(v) (v).begin(), (v).end() #define rall(v) (v).rbegin(), (v).rend() using namespace std; typedef int lli; typedef pair<lli,lli> ii; typedef vector<lli> vi; typedef vector<ii> vii; typedef long double ld; #define deb(x) cout << #x << ": " << x << endl; const lli N = 4e5 + 12; lli ANS = 0; vii adj[N]; lli dp[N]; bool vis[N]; lli n; char s[N]; lli dfs(lli u, lli p, lli st){ bool& mem = vis[st]; lli& res = dp[st]; if (!mem){ // GLcc++; mem = true; lli ans = 0; for (auto & i : adj[u]) if (i.f != p) ans += dfs(i.f, u, i.s); // cout << u+1 << ": " << max(ans - lli(s[u] - '0'), lli(s[u] - '0')) << endl; res = max(ans - lli(s[u] - '0'), lli(s[u] - '0')); } ANS = max(ANS, res); return res; } lli calc(lli u){ lli ans = 0, cc = 0; for (auto & i : adj[u]){ lli xx = dfs(i.f, u, i.s); if (xx >= 1) cc++; ans += xx; } return ans + (cc > 1 ? -1 : +1); } void solve(){ cin >> n; fore(i,1,n){ lli a, b; cin >> a >> b; a--, b--; adj[a].pb({b, i+i}); adj[b].pb({a, i+i+1}); } fore(i,0,n) cin >> s[i]; fore(i,0,n) if (s[i] == '1'){ ANS = max(calc(i), ANS); break; // return; } cout << ANS << ENDL; // deb(GLcc); } int main(){ _ // freopen("tracing.in", "r", stdin); // freopen("tracing.out", "w", stdout); // lli t; 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...