Submission #634658

#TimeUsernameProblemLanguageResultExecution timeMemory
634658PoPularPlusPlusPower Plant (JOI20_power)C++17
100 / 100
170 ms22620 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define pb(e) push_back(e) #define sv(a) sort(a.begin(),a.end()) #define sa(a,n) sort(a,a+n) #define mp(a,b) make_pair(a,b) #define vf first #define vs second #define ar array #define all(x) x.begin(),x.end() const int inf = 0x3f3f3f3f; const int mod = 1000000007; const double PI=3.14159265358979323846264338327950288419716939937510582097494459230; bool remender(ll a , ll b){return a%b;} //freopen("problemname.in", "r", stdin); //freopen("problemname.out", "w", stdout); const int N = 200003; vector<int> adj[N]; string s; int ans; int dfs(int node , int par){ if(s[node-1] == '0'){ int sum = 0; for(int i : adj[node]){ if(i!=par){ sum += dfs(i,node); } } return sum; } int mx = 0; int sum = 0; for(int i : adj[node]){ if(i != par){ int x = dfs(i , node); mx = max(mx , x); sum += x; } } ans = max(ans , mx + 1); return max(1 , sum - 1); } void solve(){ int n; cin >> n; for(int i = 0; i < n-1; i++){ int a , b; cin >> a >> b; adj[a].pb(b); adj[b].pb(a); } cin >> s; ans = 0; ans = max(ans , dfs(1,1)); cout << ans << '\n'; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); //int 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...