제출 #239286

#제출 시각아이디문제언어결과실행 시간메모리
239286jjaewonFireworks (APIO16_fireworks)C++14
19 / 100
27 ms8320 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pll; typedef pair<int,int> pii; #define fi first #define se second #define endl '\n' #define y1 holyshit #define all(x) x.begin(),x.end() const int inf=0x3f3f3f3f; int N,M,P[300010]; ll C[300010],dp[333][333]; vector<pair<int,ll>> ch[300010]; void dfs(int now){ if(now>N){ dp[now][0]=0; return; } for(auto i:ch[now]) dfs(i.fi); for(int i=0;i<=300;i++){ dp[now][i]=0; for(auto j:ch[now]){ ll curr=inf; for(int k=0;k<=i;k++){ curr=min(curr,dp[j.fi][k]+abs(j.se-i+k)); } dp[now][i]+=curr; } } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>N>>M; for(int i=2;i<=N+M;i++){ cin>>P[i]>>C[i]; ch[P[i]].push_back({i,C[i]}); } memset(dp,inf,sizeof(dp)); dfs(1); ll ans=inf; for(int i=0;i<=300;i++) ans=min(ans,dp[1][i]); cout<<ans; 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...