From c69cdd105f080bcbdbc1a279db596d4f6b03f21f Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Sat, 7 Sep 2024 19:05:21 +0800 Subject: [PATCH] update --- 20240907/P1352/P1352.cpp | 53 ++++++++++++++++++++++++++++++++++++++++ test.cpp | 37 ++++++++++++++++++++-------- xmake.lua | 5 +++- 3 files changed, 84 insertions(+), 11 deletions(-) create mode 100644 20240907/P1352/P1352.cpp diff --git a/20240907/P1352/P1352.cpp b/20240907/P1352/P1352.cpp new file mode 100644 index 0000000..c956b23 --- /dev/null +++ b/20240907/P1352/P1352.cpp @@ -0,0 +1,53 @@ +#include +#include +#include +#include +#include + +const int MAX_N=6e3+5; + +struct Node{ + std::vector sons; + int r; +}nodes[MAX_N]; + +bool had_father[MAX_N]; + +int dp[MAX_N][2]; + +void dfs(const int n){ + dp[n][1]=nodes[n].r; + for(auto &i:nodes[n].sons){ + dfs(i); + dp[n][0]+=std::max(dp[i][1],dp[i][0]); + dp[n][1]+=dp[i][0]; + } +} + +int main(){ + std::iostream::sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0); + + int n; + std::cin>>n; + + for(int i=1;i<=n;i++){ + int _r; + std::cin>>_r; + nodes[i].r=_r; + } + for(int i=1;i>s>>f; + nodes[f].sons.push_back(s); + had_father[s]=true; + } + int master{-1}; + for(int i=1;i<=n;i++){ + if(had_father[i]==false){ + master=i; + } + } + assert(master!=-1); + dfs(master); + std::cout< #include +#include + +std::ostream& operator<<(std::ostream &os,const std::vector &v){ + os<<"vector { "; + for(int i=0;i +void print(const Args& ...args){ + ((std::cout< void println(const Args& ...args){ - ((std::cout< v(10); + v[0]=1; + for(int i=1;i