Submission #427566

#TimeUsernameProblemLanguageResultExecution timeMemory
427566davi_bartPower Plant (JOI20_power)C++17
0 / 100
9 ms9748 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define int ll #define fi first #define se second #define ld long double #define pb push_back int N; string c; vector<int> v[200010],p[200010]; void dfs(int pos,int prec,int good){ if(good!=-1 && c[pos]=='1'){ p[good].pb(pos); } if(c[pos]=='1')good=pos; for(int x:v[pos]){ if(x==prec)continue; dfs(x,pos,good); } } int ans(int pos,int prec){ vector<int> k={0}; int tot=0; for(int x:v[pos]){ if(x==prec)continue; k.pb(ans(x,pos)); tot+=k.back(); } sort(k.begin(),k.end(),greater<int> ()); int ma; if(c[pos]=='1'){ if(k[0]<=1)k[0]++; ma=max(k[0],tot-1); }else{ ma=tot; } //cout<<pos<<" "<<ma<<endl; return ma; } signed main(){ ios::sync_with_stdio(false);cin.tie(0); cin>>N; for(int i=0;i<N-1;i++){ int a,b; cin>>a>>b; a--;b--; v[a].pb(b); v[b].pb(a); } cin>>c; cout<<ans(0,-1)<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...