CFCF2183F.Jumping Man

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

你有一棵根植于节点 11 的树,树上有 nn 个节点。每个节点上都写有一个小写英文字母。

对于从 11nn 的每个整数 ii,请分别解决下面的问题:

  • 考虑由以下过程形成的字符串集合:

    • 选择位于 ii 子树中的任意节点 uu 作为起始位置。
    • 重复 0 次或更多次:
      • 假设你当前位于节点 xx 上,则你可以选择位于节点 xx 的子树 ^{\text{∗}} 中的节点 vv,要求 (vx)(v \ne x),并移动到节点 vv。你可以在任何时候终止这类操作。
    • 将你经过的所有节点上的字符顺次连接成一个字符串。

    你对每条可能的路径都执行了一次上述过程。如果在一条路径中访问了一个节点,而在另一条路径中没有访问,则认为这两条路径是不同的。

    现在,你已经得到了许多字符串。你想知道每种字符串出现次数的平方和。由于答案可能非常大,请输出其值取模 998244353998\,244\,353

^{\text{∗}} 当且仅当从节点 11 到节点 vv 的最短路径经过节点 xx 时,节点 vv 在另一个节点 xx 的子树中。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt1t50001 \le t \le 5000)。测试用例说明如下。

对于每个测试用例,第一行包含一个整数 nn1n50001 \le n \le 5000)。

下一行是长度为 nn 的字符串,只包含小写英文字母,其中第 ii 个字符代表第 ii 个节点上的字母。

接下来是 n1n-1 行,每行包含两个整数 uuvv1u,vn,uv1 \leq u,v \leq n, u \neq v),代表树的一条边。

保证所有测试用例的 nn 之和不超过 50005000

输出格式

对于每个测试用例,在新行中输出 nn 个数字,分别为 i=1,2,,ni=1,2,\ldots,n 的答案,模数 998244353998\,244\,353

输入输出样例

  • 输入#1

    5
    3
    abb
    1 2
    1 3
    2
    aa
    1 2
    4
    ccbb
    1 2
    2 3
    2 4
    4
    aaaa
    1 4
    4 2
    2 3
    10
    cacbcccbac
    1 2
    2 3
    3 4
    2 5
    1 6
    2 7
    3 8
    4 9
    8 10

    输出#1

    9 1 1 
    5 1 
    29 9 1 1 
    69 5 1 19 
    185 65 19 3 1 1 1 3 1 1

说明/提示

  • 对于第一个测试案例:

    • 对于节点 2233,唯一可能从进程中获取的字符串是 b,因此,这两个节点的答案都是 11
    • 对于节点 11,可能的字符串有 a、ab、ab、b 和 b。即,a 可以通过一种方式获得,而 ab 和 b 可以通过两种方式获得。因此,节点 11 的答案是 12+22+22=91^2+2^2+2^2=9
  • 在第四个测试案例中,对于节点 11,可能的字符串有:

    • aaaa(可通过 11 种方式得到)
    • aaa(有 44 种方式)
    • aa(有 66 种方式)
    • a(有 44 种方式)
    • 因此,节点 11 的答案为 12+42+62+42=691^2+4^2+6^2+4^2=69
首页