题意:

给定一个上下属的关系树, 每个人有一个活跃值, 现在要参加一个派对, 每个人都不会和自己的上属参加派对(上属参加了,下属就不能参加了), 求参加派对的最大活跃值

分析:

枚举每个节点取与不取得最大值, 从叶子往根推。

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = ;
int dp[maxn][]; // dp[i][state] 表示i节点 去/不去 分别的最大值
int father[maxn]; //记录每个节点父亲
int vis[maxn];
int N;
int root = ;
void dfs(int node){
vis[node] = ;
for(int i = ; i <= N; i++){
if(vis[i] == - && father[i] == node){
dfs(i);
dp[node][] += dp[i][];//node去, 则i不能去
dp[node][] += max(dp[i][], dp[i][]);// node不去, 比较一下两者最大值
}
}
}
int main() {
while(cin >> N) {
for(int i = ; i <= N; i++) cin >> dp[i][];
for(int i = ; i <= N; i++){
int u , v;
cin >> v >> u;
if(v == && u == ) break;
root = u;
father[v] = u;
}
memset(vis, -, sizeof(vis));
dfs(root);
cout << max(dp[root][], dp[root][]) << "\n";
}
return ;
}

最新文章

  1. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
  2. 流媒体(音频 AudioStreamer)
  3. iOS应用架构谈(二):View层的组织和调用方案(上)
  4. Java设计模式-模板方法模式(Template Method)
  5. cookie注入的形成,原理,利用总结
  6. .net学习笔记----Asp.net的生命周期之一应用程序生命周期
  7. ViewModel命令ICommand对象定义
  8. C/C++ static vs global
  9. HDU-1018(简单数学)
  10. 数组、List和ArrayList的区别
  11. CENTOS7小注意
  12. 数据库DateTime类型为空的处理
  13. YII 1.0 验证码
  14. 跨域访问技术CORS(Cross-Origin Resource Sharing)简介
  15. mpi4python
  16. sublime3 配置go的开发环境
  17. react 首页加载loading
  18. Asp.net core 学习笔记 ( User Secrets )
  19. C#之简易计算器设计
  20. linux 设备驱动加载的先后顺序

热门文章

  1. python浅拷贝深拷贝
  2. 生产环境中配置的samba
  3. AJPFX关于Class类和Class类实例
  4. canvas基础绘制-一个小球的坠落、反弹
  5. redis安装(windows)
  6. 【HEVC简介】High Level Syntax
  7. mysql&#160;use&#160;index()&#160;优化查询
  8. element ui select组件和table做分页完整功能和二级联动效果
  9. VTK教程系列:VTK基础及应用开发教程
  10. mysql 中modify和change区别(以及使用modify修改字段名称报错)