[SNCPC2019] Unrooted Trie

题意翻译

### 题目背景 trie 的定义是这样的: - 一棵大小为 $n$ 的 trie,是一棵有着 $n$ 个节点和 $(n-1)$ 条边的有根树,每一条边上都标有一个字符; - 在 trie 中,从根结点到树上某一结点的路径代表一个字符串,节点 $x$ 代表的字符串记为 $s(x)$,特别地,根节点代表的字符串为空串。 - 若节点 $u$ 是节点 $v$ 的父节点,且 $c$ 是连接 $u$ 与 $v$ 的边上的字符,则有 $s(v) = s(u) + c$(这里的 $+$ 表示字符串的连接,而非普通的加法运算)。 当每一个节点代表的字符串互不相同时,该 trie 是合法的。 ### 题目描述 给出一个无根的 trie,求其中有多少节点可作为该 trie 的根,使得该 trie 合法。 ### 输入格式 **每个测试点由多组数据组成。** 输入的第一行包含一个正整数 $T$,代表测试数据的组数。 对于每组测试数据: 数据的第一行包含一个正整数 $n$,代表 trie 的大小。 接下来的 $(n-1)$ 行中,第 $i$ 行包含两个正整数 $u_i,v_i$ 以及一个字符 $c_i$,用空格隔开,表示有一条标有 $c_i$ 的边连接着 $u_i$ 和 $v_i$。 ### 输出格式 对于每组测试数据,输出一行一个正整数,表示可以成为根后可以使该 trie 合法的节点的个数。 ### 说明/提示 【样例解释】 对于第一组测试数据,只能选择节点 $1$ 或节点 $2$ 作为根,否则 $s(1)$ 和 $s(2)$ 相同。 对于第二组测试数据,无论如何选择节点作为根,$s(1)$ 和 $s(2)$ 或 $s(5)$ 和 $s(6)$ 相同。 【数据范围】 对于每组数据,$1 \le n \le 2 \times 10^5$,$1 \le u_i,v_i \le n$,$c_i$ 都是小写字母。 对于每个测试点,保证给出的图是一棵树,所有的 $n$ 之和不会超过 $10^6$。

题目描述

Recall the definition of a trie: - A trie of size $n$ is a rooted tree with $n$ vertices and $(n-1)$ edges, where each edge is marked with a character; - Each vertex in a trie represents a string. Let $s(x)$ be the string vertex $x$ represents; - The root of the trie represents an empty string. Let vertex $u$ be the parent of vertex $v$, and let $c$ be the character marked on the edge connecting vertex $u$ and $v$, we have $s(v)$ = $s(u) + c$. Here $+$ indicates string concatenation, not the normal addition operation. We say a trie is valid, if the string each vertex represents is distinct. Given an unrooted tree with $n$ vertices and $(n-1)$ edges, where each edge is marked with a character, how many different vertices can be selected as the root of the tree so that the tree becomes a valid trie?

输入输出格式

输入格式


There are multiple test cases. The first line of the input contains an integer $T$, indicating the number of test cases. For each test case: The first line contains an integer $n$ ($1 \le n \le 10^5$), indicating the size of the tree. For the following $(n-1)$ lines, the $i$-th line contains two integers $u_i$, $v_i$ ($1 \le u_i, v_i \le n$) and a character $c_i$ separated by a space, indicating that there is an edge marked with a character $c_i$ connecting vertex $u_i$ and $v_i$. It's guaranteed that $c_i$ will only be lower-case English letters. It's guaranteed that the given graph is a tree, and the sum of $n$ of all test cases will not exceed $10^6$.

输出格式


For each test case output one line containing one integer, indicating the number of different vertices that can be selected as the root of the tree to make it a valid 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

说明

For the first sample test case, we can only select vertex 1 or vertex 2 as the root, otherwise $s(1)$ and $s(2)$ will be the same. For the second sample test case, no matter which vertex we select as the root, $s(1)$ and $s(2)$, or $s(5)$ and $s(6)$ will be the same.