算法训练 结点选择 (树形DP)
2015-03-20 22:19
337 查看
Link:http://lx.lanqiao.org/problem.page?gpid=T14
问题描述
有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?
输入格式
第一行包含一个整数 n 。
接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。
接下来一共 n-1 行,每行描述树上的一条边。
输出格式
输出一个整数,代表选出的点的权值和的最大值。
样例输入
5
1 2 3 4 5
1 2
1 3
2 4
2 5
样例输出
12
样例说明
选择3、4、5号点,权值和为 3+4+5 = 12 。
数据规模与约定
对于20%的数据, n <= 20。
对于50%的数据, n <= 1000。
对于100%的数据, n <= 100000。
权值均为不超过1000的正整数。
AC code:
问题描述
有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?
输入格式
第一行包含一个整数 n 。
接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。
接下来一共 n-1 行,每行描述树上的一条边。
输出格式
输出一个整数,代表选出的点的权值和的最大值。
样例输入
5
1 2 3 4 5
1 2
1 3
2 4
2 5
样例输出
12
样例说明
选择3、4、5号点,权值和为 3+4+5 = 12 。
数据规模与约定
对于20%的数据, n <= 20。
对于50%的数据, n <= 1000。
对于100%的数据, n <= 100000。
权值均为不超过1000的正整数。
AC code:
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<cmath> #include<map> #include<queue> #include<vector> #define LL long long #define MAXN 1000100 using namespace std; struct node{ int v; int next; }edge[MAXN]; int tot,n,m,u,v; int head[MAXN]; void init() { memset(head,-1,sizeof(head)); tot=0; } void add(int from,int to,int w) { edge[tot].v=to; edge[tot].next=head[from]; head[from]=tot++; } int dp[MAXN][2]; int ans; void dfs(int x,int pre) { for(int i=head[x];i!=-1;i=edge[i].next) { int v=edge[i].v; if(v==pre) continue; dfs(v,x); dp[x][1]+=dp[v][0]; dp[x][0]+=max(dp[v][0],dp[v][1]); } } int main() { while(cin>>n) { memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { cin>>dp[i][1]; } m=n-1; init(); while(m--) { cin>>u>>v; add(u,v,0); add(v,u,0); } dfs(1,-1); ans=max(dp[1][0],dp[1][1]); cout<<ans<<endl; } return 0; }
相关文章推荐
- 蓝桥杯,算法训练 结点选择(简箪的树形DP)
- 算法训练 结点选择 (无向边树形DP)
- 算法训练 结点选择 树形DP
- 算法训练 结点选择 【树形dp】
- 蓝桥杯 - 算法训练 - ALGO - 4 结点选择 (经典树形DP)
- 算法训练 结点选择 (树形dp)(点权)
- 蓝桥杯 算法提高 结点选择(树形DP)
- 蓝桥杯 算法训练 结点选择 DP(SDNU 1482.结点选择)
- 蓝桥杯 结点选择(树形dp)
- 算法训练 结点选择【树形动态规划】
- 算法训练 结点选择
- wust-1299-结点选择(树形DP)
- 算法训练 结点选择
- 蓝桥杯 算法训练 结点选择 树形动态规划
- 算法训练 结点选择 蓝桥杯
- 算法训练 结点选择 树dp
- 树形DP 结点选择
- 结点选择【树形DP】
- 算法-蓝桥杯-算法训练 结点选择(JAVA)
- 蓝桥杯 算法训练 结点选择