Submission #1184313

#TimeUsernameProblemLanguageResultExecution timeMemory
1184313GrayPower Plant (JOI20_power)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> using namespace std; #define ll int #define ull unsigned long long #define ld long double #define ff first #define ss second #define ln "\n" #define mp make_pair #define pb push_back #define INF (ll)2e18 #define MOD (ll)(1e9+7) vector<vector<ll>> A; string s; ll dfs(ll u, ll p, ll &res){ ll ret=0, cnt=0; for (auto v:A[u]){ if (v==p) continue; ll cur = dfs(v, u, res); if (cur) cnt++; ret+=cur; } if (cnt==0 and s[u]=='1') { ret++; res=max(res, ret); } else if (cnt==1 and s[u]=='1') { res=max(res, ret+1); } else res=max(res, ret); return ret; } void solve(){ ll n; cin >> n; A.resize(n+1); for (ll i=0; i<n-1; i++){ ll u, v; cin >> u >> v; A[u].push_back(v); A[v].push_back(u); } cin >> s; ll res=0; dfs(1, 1, res); cout << res << ln; } /* 9-2 101110010001 */ int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); #ifdef LOCAL auto start = chrono::high_resolution_clock::now(); #endif ll t=1; // cin >> t; for (ll c=1; c<=t; c++) solve(); #ifdef LOCAL auto duration = chrono::duration_cast<chrono::microseconds>(chrono::high_resolution_clock::now() - start); cout << setprecision(0) << fixed << "time: " << (double)duration.count()/1000.0 << " milliseconds" << endl; #endif }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...