luogu#P6088. [JSOI2015] 字符串树

[JSOI2015] 字符串树

题目背景

萌萌买了一颗字符串树的种子,春天种下去以后夏天就能长出一棵很大的字符串树。字符串树很奇特,树枝上都密密麻麻写满了字符串,看上去很复杂的样 子。

题目描述

字符串树本质上还是一棵树,即 NN 个节点 N1N-1 条边的连通无向无环图,节点从 11NN 编号。与普通的树不同的是,树上的每条边都对应了一个字符串。萌萌和 JYY 在树下玩的时候,萌萌决定考一考 JYY。每次萌萌都写出一个字符串 SS 和两个节点 U,VU,V,JYY 需要立即回答 UUVV 之间的最短路径(即 U,VU,V 之间边数最少的路径,由于给定的是一棵树,这样的路径是唯一的)上有多少个字符串以 SS 为前缀。

JYY 虽然精通编程,但对字符串处理却不在行。所以他请你帮他解决萌萌的难题。

输入格式

输入第一行包含一个整数 NN,代表字符串树的节点数量。

接下来 N1N-1 行,每行先是两个数 U,VU,V,然后是一个字符串 SS,表示节点 UU 和节点 VV 之间有一条直接相连的边,这条边上的字符串是 SS。输入数据保证给出的是一棵合法的树。

接下来一行包含一个整数 QQ,表示萌萌的问题数。

接下来 QQ 行,每行先是两个数 U,VU,V,然后是一个字符串 SS,表示萌萌的一个问题是节点 UU 和节点 VV 之间的最短路径上有多少字符串以 SS 为前缀。

输出格式

输出 QQ 行,每行对应萌萌的一个问题的答案。

4
1 2 ab
2 4 ac
1 3 bc
3
1 4 a
3 4 b
3 2 ab
2
1
1

提示

对于 100%100\% 的数据,1N,Q1051\leq N,Q\leq 10^5,输入所有字符串长度不超过 1010 且只包含 a~z 的小写字母。