code【vs】1380 没有上司的舞会(树形dp)
来源:互联网 发布:js判断json是否存在 编辑:程序博客网 时间:2024/04/30 07:00
题目描述 Description
Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要求与会职员的快乐指数最大。但是,没有职员愿和直接上司一起与会。
输入描述 Input Description
第一行一个整数N。(1<=N<=6000)
接下来N行,第i+1行表示i号职员的快乐指数Ri。(-128<=Ri<=127)
接下来N-1行,每行输入一对整数L,K。表示K是L的直接上司。
最后一行输入0,0。
输出描述 Output Description
输出最大的快乐指数。
样例输入 Sample Input
7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
0 0
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
各个测试点1s
下面是代码:
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int a[6001], flag[6001] = {0}, head[6001], tot = 0, dp[6001][2];struct node{ int next, to;} e[6001];void add(int u, int v) //建立邻接表{ e[++tot].to = v; e[tot].next = head[u]; head[u] = tot;}void dfs(int x) // 调用递归寻找所有直属下属{ for(int i = head[x]; i; i = e[i].next) { dfs(e[i].to); dp[x][0] += max(dp[e[i].to][0], dp[e[i].to][1]); dp[x][1] += dp[e[i].to][0]; } dp[x][1] += a[x];}int main(){ int n; scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", a+i); } int x, y; while(scanf("%d%d", &x, &y) && (x || y)) { add(y, x); flag[x] = 1; } for(int i = 1; i <= n; i++)// 寻找根节点 if(!flag[i]) { dfs(i); printf("%d", max(dp[i][0], dp[i][1])); return 0; }}
0 0
- code【vs】1380 没有上司的舞会(树形dp)
- 1380 没有上司的舞会 树形dp
- code vs 1380没有上司的舞会
- 【codevs 1380】没有上司的舞会(树形dp)
- CodeVS 1380 没有上司的舞会(树形DP)
- 没有上司的舞会--经典树形DP
- 树形DP 没有上司的舞会
- 树形dp 没有上司的舞会
- 树形DP Tyvj1052 没有上司的舞会
- [树形DP入门]没有上司的舞会
- 【树形dp】没有上司的舞会
- 【树形DP】wikioi 1380 没有上司的舞会
- codevs 1380 没有上司的舞会(树形dp)
- Codevs 1380 没有上司的舞会 [树形dp]
- codevs 1380 没有上司的舞会 树形DP
- CodeVS.1380 没有上司的舞会 (树形DP)
- 【CS 1380】没有上司的舞会(树形dp+dfs)
- [树形DP] 猴腮雷 (没有上司的舞会)
- 极客学院ios开发工程师系列课程
- java集合系列——Set之HashSet和TreeSet介绍(十)
- Python学习笔记(七)——Python 类
- php--缓冲区
- CSS3 超有用的Flexbox 口诀
- code【vs】1380 没有上司的舞会(树形dp)
- 泛腾科技xStorage 6100 6U VPX超高速存储系统
- Android性能优化系列之布局优化
- dp(DAG模型)
- 今日头条,清理分析
- 给大家分享一下最近开发遇到的一些坑
- CentOS下安装MySQLdb
- iOS图案解锁(九宫格)
- Android性能优化系列之内存优化