题目描述
有一棵 N 个顶点的树,顶点编号为 1 到 N。第 i 条边连接顶点 ui 和顶点 vi。
此外,有 N 个编号为 1 到 N 的棋子。初始时,棋子 i 放在顶点 i 上。
你可以进行如下操作,任意次(包括 0 次):
- 选择一条边。设该边的两个端点为顶点 u 和 v,交换放在顶点 u 和顶点 v 上的棋子。然后,删除这条被选中的边。
设操作全部结束后,顶点 i 上的棋子为 ai。问作为数列 (a1,a2,…,aN) 可能出现的方案有多少种?请输出方案数对 998244353 取模的结果。
输入格式
输入以如下格式从标准输入读入。
N
u1 v1
u2 v2
⋮
uN−1 vN−1
输出格式
输出作为 (a1,a2,…,aN) 可能出现的方案数对 998244353 取模的结果。
样例 1
输入
3
1 2
2 3
输出
5
样例 2
输入
5
2 5
3 4
1 3
1 5
输出
34
样例 3
输入
8
4 5
2 5
3 6
1 3
1 8
2 7
2 8
输出
799
说明/提示
限制条件
- 2≤N≤3000
- 1≤ui<vi≤N
- 输入给出的图为一棵树
样例解释 1
例如,可以通过以下步骤得到 (a1,a2,a3)=(2,1,3)。
- 选择第 1 条边,交换顶点 1 和顶点 2 上的棋子,并删除该边。此时 (a1,a2,a3)=(2,1,3)。
- 结束操作。
又如,可以通过以下步骤得到 (a1,a2,a3)=(3,1,2)。
- 选择第 2 条边,交换顶点 2 和顶点 3 上的棋子,并删除该边。此时 (a1,a2,a3)=(1,3,2)。
- 选择第 1 条边,交换顶点 1 和顶点 2 上的棋子,并删除该边。此时 (a1,a2,a3)=(3,1,2)。
- 结束操作。
通过操作可以得到的数列共有以下 5 种:
- (1,2,3)
- (1,3,2)
- (2,1,3)
- (2,3,1)
- (3,1,2)
由 ChatGPT 4.1 翻译