P13484 [GCJ 2008 EMEA SemiFinal] Rainbow Trees
题目描述
在图论中,树是一个连通、无向、无环的简单图。一个有 $n$ 个节点的树总是有 $n - 1$ 条边。
树中的一条路径是由一系列互不相同且相连的边组成的(路径中每对相邻的边共享一个顶点)。
考虑一棵有 $n$ 个顶点和 $n - 1$ 条边的树。你可以用 $k$ 种颜色中的任意一种来给每条边染色。
如果对边的染色满足:在树中任意长度为 $2$ 或 $3$ 的路径上,所有边的颜色都不同(即任意两条相邻的边颜色不同,任意三条连续的边颜色也都不同),则称这种染色为“彩虹染色”。
给定一棵树和颜色数 $k$,请你计算有多少种不同的彩虹染色方案。答案对 $1000000009$ 取模。
输入格式
输入的第一行是测试用例的数量 $C$。对于每个测试用例,包含如下内容:
- 第一行包含两个整数,格式为“$n$ $k$”。$n$ 表示树的节点数,$k$ 表示可用的颜色数。
- 接下来的 $n-1$ 行,每行包含两个整数“$x$ $y$”,表示有一条边连接节点 $x$ 和节点 $y$。节点编号从 $1$ 到 $n$。
输出格式
对于每个测试用例,输出一行,格式为“Case #$X$: $Y$”,其中 $X$ 是测试用例编号(从 $1$ 开始),$Y$ 是该测试用例的答案。
说明/提示
**样例解释**
在第一个样例中,树有四个节点。每个节点都与其它三个节点中的一个相连。每对这些边都是相邻的,因此要实现彩虹染色,所有边必须染成不同的颜色。因此有 $10 \times 9 \times 8 = 720$ 种彩虹染色方案。
在第二个样例中,树本身是一条包含 $4$ 条边的路径,且有 $3$ 种颜色。前三条边必须染成不同的颜色,因此有 $3 \times 2 \times 1$ 种染色方式,第四条边只有一种选择,所以总共有 $6$ 种彩虹染色方案。
**数据范围**
- $1 \leq k \leq 1000000000$
- 所有节点编号均在 $1$ 到 $n$ 之间。
**小数据范围(9 分,测试点 1 - 可见)**
- $1 \leq C \leq 100$
- $2 \leq n \leq 20$
**大数据范围(15 分,测试点 2 - 隐藏)**
- $1 \leq C \leq 40$
- $2 \leq n \leq 500$
由 ChatGPT 4.1 翻译