二叉苹果树(由根分为左子树和右子树两部分情况)
有一棵二叉苹果树,如果数字有分叉,一定是分两叉,即没有只有一个儿子的节点。这棵树共 个节点,标号 至 ,树根编号一定为 。 我们用一根树枝两端连接的节点编号描述一根树枝的位置。一棵有四根树枝的苹果树,因为树枝太多了,需要剪枝。但是一些树枝上长有苹果,给定需要保留的树枝数量,求最多能留住多少苹果。 输入格式 第一行两个数 N 和 Q ,N 表示树的节点数, Q表示要保留的树枝数量。 接下来 N-1 行描述树枝信息,每行三个整数,前两个是它连接的节点的编号,第三个数是这根树枝上苹果数量。 输出格式 输出仅一行,表示最多能留住的苹果的数量。 f[i][j]表示当前节点保留j根树枝的最大苹果数 #include<bits/stdc++.h> #define re return #define inc(i,l,r) for(int i=l;i<=r;++i) using namespace std; template<typename T>inline void rd(T&x) { char c;bool f=0; while((c=getchar())<'0'||c>'9')if(c=='-')f=1; x=c^48; while((c=getchar())>='0'&&c<='9')x=x*10+(c^48); if(f)x=-x; } const int maxn=105; int n