Submission #735436

#TimeUsernameProblemLanguageResultExecution timeMemory
735436alexddPower Plant (JOI20_power)C++17
6 / 100
5 ms5076 KiB
#include<bits/stdc++.h> using namespace std; int n; vector<int> con[200005]; int dp[200005]; bool iss[200005]; int mxm=0; void dfs(int nod, int par) { int sum=0,cntc=0; for(auto adj:con[nod]) { if(adj!=par) { dfs(adj,nod); sum += dp[adj]; cntc++; } } if(iss[nod]) { dp[nod]=max(1, sum-1); if(cntc==1) mxm = max(mxm, sum+1); } else { dp[nod]=sum; } mxm = max(mxm, dp[nod]); //cout<<nod<<" "<<dp[nod]<<"\n"; } signed main() { ios_base::sync_with_stdio(0);cin.tie(0); int a,b; cin>>n; for(int i=1;i<n;i++) { cin>>a>>b; con[a].push_back(b); con[b].push_back(a); } int cnt1=0; char ch; for(int i=1;i<=n;i++) { cin>>ch; if(ch=='1') iss[i]=1; else iss[i]=0; if(iss[i]) cnt1++; } dfs(1,0); cout<<mxm; return 0; } /** dp[i] = scorul maxim pe care il putem obtine daca nu avem nicio statie stricata */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...