AT_arc171_c.[ARC171C] Swap on Tree

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一棵 NN 个顶点的树,顶点编号为 11 到 NN。第 ii 条边连接顶点 uiu_i 和顶点 viv_i。
此外,有 NN 个编号为 11 到 NN 的棋子。初始时,棋子 ii 放在顶点 ii 上。
你可以进行如下操作,任意次(包括 00 次):

  • 选择一条边。设该边的两个端点为顶点 uu 和 vv,交换放在顶点 uu 和顶点 vv 上的棋子。然后,删除这条被选中的边。

设操作全部结束后,顶点 ii 上的棋子为 aia_i。问作为数列 (a1,a2,…,aN)(a_1, a_2, \dots, a_N) 可能出现的方案有多少种?请输出方案数对 998244353998244353 取模的结果。

输入格式

输入以如下格式从标准输入读入。

NN
u1u_1 v1v_1
u2u_2 v2v_2
⋮\vdots
uN−1u_{N-1} vN−1v_{N-1}

输出格式

输出作为 (a1,a2,…,aN)(a_1, a_2, \dots, a_N) 可能出现的方案数对 998244353998244353 取模的结果。

输入输出样例

  • 输入#1

    3
    1 2
    2 3

    输出#1

    5
  • 输入#2

    5
    2 5
    3 4
    1 3
    1 5

    输出#2

    34
  • 输入#3

    8
    4 5
    2 5
    3 6
    1 3
    1 8
    2 7
    2 8

    输出#3

    799

说明/提示

限制条件

  • 2≤N≤30002 \leq N \leq 3000
  • 1≤ui<vi≤N1 \leq u_i < v_i \leq N
  • 输入给出的图为一棵树

样例解释 1

例如,可以通过以下步骤得到 (a1,a2,a3)=(2,1,3)(a_1, a_2, a_3) = (2, 1, 3)。

  • 选择第 11 条边,交换顶点 11 和顶点 22 上的棋子,并删除该边。此时 (a1,a2,a3)=(2,1,3)(a_1, a_2, a_3) = (2, 1, 3)。
  • 结束操作。

又如,可以通过以下步骤得到 (a1,a2,a3)=(3,1,2)(a_1, a_2, a_3) = (3, 1, 2)。

  • 选择第 22 条边,交换顶点 22 和顶点 33 上的棋子,并删除该边。此时 (a1,a2,a3)=(1,3,2)(a_1, a_2, a_3) = (1, 3, 2)。
  • 选择第 11 条边,交换顶点 11 和顶点 22 上的棋子,并删除该边。此时 (a1,a2,a3)=(3,1,2)(a_1, a_2, a_3) = (3, 1, 2)。
  • 结束操作。

通过操作可以得到的数列共有以下 55 种:

  • (1,2,3)(1, 2, 3)
  • (1,3,2)(1, 3, 2)
  • (2,1,3)(2, 1, 3)
  • (2,3,1)(2, 3, 1)
  • (3,1,2)(3, 1, 2)

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页