这道题如何把边权转化为点权

P2015 二叉苹果树

大佬求助!!!
by 啷里个浪 @ 2020-12-08 19:40:32


设$a_i$保存其点上方的边的苹果数
by Union_of_Britain @ 2021-02-19 22:35:53


@[kkksc0100](/user/342076) 多谢!
by 啷里个浪 @ 2021-02-21 15:37:34


dfs的时候带着子节点编号和父节点编号。然后每层将之前两点的边权赋给子节点就好了,1这个根节点的权值为0. ```cpp void dfs(int son,int fa) { nval[son]=val[fa][son]; dp[son][1]=nval[son]; // cout<<son<<' '<<fa<<' '<<val[fa][son]<<endl; for(int i=0;i<edge[son].size();i++) { int v=edge[son][i]; if(v!=fa) { dfs(v,son); for(int j=m+1;j>0;j--) { for(int k=1;k<j;k++) dp[son][j]=max(dp[son][j],dp[son][j-k]+dp[v][k]); } } } } ```
by Nekura_Yuki @ 2021-04-07 20:22:09


|