Submission #1143621

#TimeUsernameProblemLanguageResultExecution timeMemory
1143621why1Jobs (BOI24_jobs)C++20
0 / 100
34 ms14400 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define pii pair<ll,ll> #define sz size() #define all(v) v.begin(),v.end() #define fi first #define se second const int N = 2e5; const int mod = 1e9+7; const ll INF = 1e18; const int di[] = {1, -1, 0, 0}; const int dj[] = {0, 0, 1, -1}; vector<int> g[N+1]; ll val[N+1],p[N+1]; ll dp[N+1]; void dfs(int v,int pr){ for(auto i: g[v]){ if(i!=pr){ dfs(i,v); if(dp[i]>0) dp[v]+=dp[i]; } } if(val[v]>0) dp[v]+=val[v]; else if(dp[v]>val[v]) dp[v]+=val[v]; } void solve() { ll n,s; cin>>n>>s; for(int i = 1; i <= n; i++){ cin>>val[i]>>p[i]; if(p[i]!=0){ g[i].pb(p[i]); g[p[i]].pb(i); } } ll ans=0; for(int i = 1; i <= n; i++){ if(p[i]==0){ dfs(i,-1); ans+=dp[i]; } } cout<<ans<<"\n"; } int main() { //freopen("cowrun.in","r",stdin); //freopen("cowrun.out","w",stdout); ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t=1; //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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...