Submission #1280240

#TimeUsernameProblemLanguageResultExecution timeMemory
1280240bjp123Magic Tree (CEOI19_magictree)C++20
0 / 100
2016 ms5760 KiB
#include <bits/stdc++.h> #define ll long long #define fi first #define se second #define pb push_back #define ii pair<ll, ll> #define all(a) a.begin(), a.end() #define iii pair<ii, ll> #define ld long double using namespace std; const ll N = 1e5 + 5; const ll mod = 1e9+7; const ll inf=4e18+3; const ld expp=1e-12; ll n, m, i, j, k, t, q,x,c; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin>>n>>m>>k; vector<ll>dp(n+1,0),par(n+1),val(n+1,0); vector<vector<ii>>times(k+1); for(i=2;i<=n;i++) { cin>>par[i]; //v[par[i]].pb(i); } //dfs(1); for(i=1;i<=m;i++) { ll u,d,w; cin>>u>>d>>w; times[d].pb({u,w}); } for(i=1;i<=k;i++) { for(auto [u,w]:times[i]) { val[u]=w; dp[u]+=w; //cout<<dp[1]<<'\n'; while(u!=1) { ll v=par[u],lst=dp[v]; dp[v]=max(dp[v],dp[v]-val[v]+w); //if(u==5) cout<<v<<" "<<w<<" "<<dp[v]<<'\n'; w=dp[v]-lst; if(w==0) break; u=v; } } } cout<<dp[1]; return 0; } /* x+[2c(x)+1.5) =(c(x)+1)^2 +.5 */
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...