树(tree.cpp)
【题目描述】
树是图的一种特殊情况。一棵树是有 n 个结点通过 n-1 条
边 进 行 连 接 的
图。
树的计数是的树结构算法中的一种基础算法。许多高级的
算法被用于解决 这一类问题。今天我们介绍一种重要的方法叫做
Prufer 编码。
Prufer 编码是定义在至少有两个结点的标签树上。一棵标签
树中的每一个
结点由 1 到 n 进行标号,Prufer 编码的过程可以由以下过程进行描
述:
Step 1:如果这棵树正好有两个结点,退出。
Step 2:找到标号最小的叶子结点,将与该叶子结点相连的结
点放入 Prufer 编码序列的尾部,并删除该叶结点。
Step 3:返回步骤 1
如下面这棵树的 Prufer 编码序列为:331
现在你的任务是给定 n 个结点的标签树,其中 k 个是叶子结
点,请计算不 同的树有多少种?
【输入格式】
输入可能有多组测试数据,每组测试数据一行,包含两个
整数 n 和 k, 1<=n<=100,1<=k<=n。
【输出格式】
每组数据输出一行,表示树的种树(mod
2007)。 【输入样例】
5 2
【输出样例】
60