loj#P6296. 迷失的字符串

迷失的字符串

题目描述

来源:Claris,另见 BZOJ 4713

一棵树有 nn 个结点,树上每条边都有一个小写字母。
对于任意两个不同的点 u,vu,v,我们可以在树上找到以 uu 为起点,以 vv 为终点的唯一一条最短路径,并将沿途经过的边上的字符依次写下来,得到一个字符串。
对于一个字符串,如果存在一个点对 (u,v)(u,v),使得它们路径上的字符串与其完全匹配,那么我们就称这个字符串属于这棵树。
现在有 mm 个迷失的字符串,请你写一个程序帮助判断每一条字符串是否属于这棵树。

输入格式

第一行包含一个正整数 nn,表示树的点数。
接下来 n1n-1 行,每行包含两个正整数 a,ba, b 和一个小写字符 c(1a,bn,ab)c(1\le a, b\le n, a≠b),表示点 a,ba, b 间有一条边,边上的字符为 cc
接下来一行包含一个正整数 mm,表示迷失的字符串的个数。
接下来 mm 行,每行一个由小写字符组成的字符串,分别表示每个迷失的字符串。

输出格式

包含 mm 行,对于第 ii 行,如果在树上可以找到第 ii 个字符串,输出 YES,否则输出 NO

4
1 2 b
1 4 a
2 3 c
9
bc
cb
b
c
d
aa
ab
abc
cba
YES
YES
YES
YES
NO
NO
YES
YES
YES

数据范围与提示

2n30000,1m300002\le n\le 30000, 1\le m\le 30000,所有迷之字符串的长度之和不超过 3000030000