ZJU 3201 Tree of Tree 트리 DP

Tree of Tree
Time Limit: 1 Second     
Memory Limit: 32768 KB
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 1
10 20 30
0 1
0 2
3 2
10 20 30
0 1
0 2

Sample Output
30
40

Author: LIU, Yaoting
 
 
 
이 제목은 무방향도이고 어느 점이든 루트 노드일 수 있습니다. 이 프로그램이 계산한 모든 F[I][K]는 I를 루트 노드의 최대값입니다. 하하
 
키 코드
 
void dfs(int idx)
{for(int i=bug[idx];i<=m;i++) dp[idx][i]=p[idx];//초기화 수조used[idx]=1;//표시, 가지치기 for(int i=0;i=bug[idx];j--) for(int k=1; k<=j-bug[idx]; k++)                 if(dp[idx][j]

좋은 웹페이지 즐겨찾기