QOJ.ac

QOJ

时间限制: 1 s 内存限制: 256 MB 总分: 100 可 Hack ✓

#6729. 无根字典树

统计

回顾 Trie(字典树)的定义:

  • 大小为 $n$ 的 Trie 是一棵有 $n$ 个顶点和 $(n - 1)$ 条边的有根树,其中每条边都标记有一个字符;
  • Trie 中的每个顶点代表一个字符串。设 $s(x)$ 为顶点 $x$ 所代表的字符串;
  • Trie 的根代表空字符串。设顶点 $u$ 是顶点 $v$ 的父节点,$c$ 是连接 $u$ 和 $v$ 的边上的字符,则有 $s(v) = s(u) + c$。这里的 $+$ 表示字符串拼接,而非普通的加法运算。

如果每个顶点所代表的字符串互不相同,我们称该 Trie 是合法的。

给定一棵有 $n$ 个顶点和 $(n - 1)$ 条边的无根树,其中每条边都标记有一个字符,问有多少个不同的顶点可以被选为树的根,使得该树成为一棵合法的 Trie?

输入格式

输入包含多组测试数据。第一行包含一个整数 $T$,表示测试数据的组数。对于每组测试数据:

第一行包含一个整数 $n$ ($1 \le n \le 10^5$),表示树的大小。

接下来的 $(n - 1)$ 行,第 $i$ 行包含两个整数 $u_i, v_i$ ($1 \le u_i, v_i \le n$) 和一个字符 $c_i$,中间用空格隔开,表示存在一条标记为字符 $c_i$ 的边连接顶点 $u_i$ 和 $v_i$。保证 $c_i$ 均为小写英文字母。

保证给定的图是一棵树,且所有测试数据的 $n$ 之和不超过 $10^6$。

输出格式

对于每组测试数据,输出一行,包含一个整数,表示可以选为根以使树成为合法 Trie 的不同顶点的数量。

样例

样例输入 1

2
6
3 1 a
3 2 a
3 4 b
4 5 c
4 6 d
6
3 1 a
3 2 a
3 4 b
5 4 c
6 4 c

样例输出 1

2
0

说明

对于第一个样例测试数据,我们只能选择顶点 1 或顶点 2 作为根,否则 $s(1)$ 和 $s(2)$ 将会相同。

对于第二个样例测试数据,无论选择哪个顶点作为根,$s(1)$ 和 $s(2)$,或者 $s(5)$ 和 $s(6)$ 都会相同。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.