蓝桥杯 算法训练 结点选择
题解参考:https://blog.csdn.net/u013852115/article/details/79437734
https://www.cnblogs.com/A-Little-Nut/p/10394084.html
语法参考:https://www.cnblogs.com/zhuruibi/p/8983192.html
https://www.cnblogs.com/home123/p/7450758.html
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+5; 4 int dp[2][N]={0}; 5 vector<vector<int> > ve; 6 void dfs(int now,int pre)//因为只有一个来处,所以用一个值来标识即可,不需用到vis数组 7 { 8 for (int i=0;i<ve[now].size();i++) 9 { 10 int to=ve[now][i]; 11 if (to==pre) continue; 12 dfs(to,now); 13 dp[0][now]+=max(dp[0][to],dp[1][to]);//注意是+=! 14 dp[1][now]+=dp[0][to]; 15 } 16 } 17 int main() 18 { 19 // freopen("in.txt","r",stdin); 20 int n; 21 cin>>n; 22 ve.resize(n+1);//此句不能少!! 23 for (int i=1;i<=n;i++)//注意审题,这里需从0开始!! 24 { 25 int tmp; 26 cin>>tmp; 27 dp[1][i]=tmp;//tmp是第i个节点的权值不是第tmp个节点的权值!! 28 } 29 for (int i=0;i<n-1;i++) 30 { 31 int a,b; 32 cin>>a>>b; 33 ve[a].push_back(b); 34 ve[b].push_back(a); 35 } 36 dfs(1,0); 37 cout<<max(dp[0][1],dp[1][1])<<endl; 38 39 return 0; 40 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?