ZOJ 3201 Tree of Tree
来源:互联网 发布:淘宝宝贝怎么发布 编辑:程序博客网 时间:2024/05/17 20:24
树形背包。。。
[Submit] [Go Back] [Status]
Description
You're given a tree with weights of each node, you need to find the maximum subtree of specified size of this tree.
Tree Definition
A tree is a connected graph which contains no cycles.
Input
There are several test cases in the input.
The first line of each case are two integers N(1 <= N <= 100), K(1 <= K <= N), where N is the number of nodes of this tree, and K is the subtree's size, followed by a line with N nonnegative integers, where the k-th integer indicates the weight of k-th node. The following N - 1 lines describe the tree, each line are two integers which means there is an edge between these two nodes. All indices above are zero-base and it is guaranteed that the description of the tree is correct.
Output
One line with a single integer for each case, which is the total weights of the maximum subtree.
Sample Input
3 110 20 300 10 23 210 20 300 10 2
Sample Output
3040
Source
[Submit] [Go Back] [Status]
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int INF=0x3f3f3f3f;int Adj[200],Size;struct E{ int to,next;}Edge[40000];void init(){ Size=0; memset(Adj,-1,sizeof(Adj));}void Add_Edge(int u,int v){ Edge[Size].to=v; Edge[Size].next=Adj[u]; Adj[u]=Size++;}int n,K,dp[200][200];void dfs(int f,int u){ for(int i=Adj[u];~i;i=Edge[i].next) { int v=Edge[i].to; if(v==f) continue; dfs(u,v); for(int j=K;j>=1;j--) { for(int k=1;k<j;k++) { dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]); } } }}int main(){while(scanf("%d%d",&n,&K)!=EOF){ init(); memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) scanf("%d",&dp[i][1]); for(int i=0;i<n-1;i++) { int u,v; scanf("%d%d",&u,&v); Add_Edge(u,v); Add_Edge(v,u); } dfs(-1,0); int ans=-INF; for(int i=0;i<n;i++) ans=max(ans,dp[i][K]); printf("%d\n",ans);} return 0;}
- ZOJ 3201 Tree of Tree
- ZOJ 3201 Tree of Tree
- ZOJ - 3201 Tree of Tree
- Zoj 3201 Tree of Tree
- ZOJ 3201 Tree of Tree
- ZOJ - 3201 Tree of Tree
- ZOJ 3201 Tree of Tree 树形DP
- ZOJ - 3201 Tree of Tree 树形DP
- ZOJ 3201 Tree of Tree 大水树形背包
- zoj 3201 简单树形dp Tree of Tree
- ZOJ 3201 Tree of Tree(树形背包DP)
- ZOJ 3201 Tree of Tree(树形DP)
- zoj 3201 Tree of Tree(树形背包dp)
- TOJ 2676 ZOJ 3201 Tree of Tree / 树形DP
- ZOJ 3201 Tree of Tree(树形dp + 分组背包)
- ZOJ 3201 Tree of Tree(树形DP+背包)
- 【树形dp】ZOJ-3326-Tree of Tree
- zoj 3516 Tree of Three
- HDOJ 2196 Computer
- Android多线程方式处理图片下载及显示
- mac下安装wordpress以及配置相关环境
- 一种中文文本的快速分词方法(二)
- codeforces Strings of Power
- ZOJ 3201 Tree of Tree
- Struts2模型驱动
- Computer Science Study Summary --part 3
- A+B Problem(V)
- dp 01串
- Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件
- 一种中文文本的快速分词方法(三)
- Android编译笔记
- .Net作Winform程序时,插入数据没进Access数据库?