#P6088. 字符串树(String Tree)
0
字符串树(String Tree)
字符串树(String Tree)
题目描述
萌萌买了一颗字符串树的种子,春天种下去以后夏天就能长出一棵很大的字符串树。字符串树很奇特,树枝上都密密麻麻写满了字符串,看上去很复杂的样子。
字符串树本质上还是一棵树,即 个节点 条边的连通无向无环图,节点从 到 编号。与普通的树不同的是,树上的每条边都对应了一个字符串。萌萌和 JYY 在树下玩的时候,萌萌决定考一考 JYY。每次萌萌都写出一个字符串 和两个节点 ,JYY 需要立即回答 和 之间的最短路径(即 之间边数最少的路径,由于给定的是一棵树,这样的路径是唯一的)上有多少个字符串以 为前缀。
JYY 虽然精通编程,但对字符串处理却不在行。所以他请你帮他解决萌萌的难题。
输入格式
输入第一行包含一个整数 ,代表字符串树的节点数量。
接下来 行,每行先是两个数 ,然后是一个字符串 ,表示节点 和节点 之间有一条直接相连的边,这条边上的字符串是 。输入数据保证给出的是一棵合法的树。
接下来一行包含一个整数 ,表示萌萌的问题数。
接下来 行,每行先是两个数 ,然后是一个字符串 ,表示萌萌的一个问题是节点 和节点 之间的最短路径上有多少字符串以 为前缀。
输出格式
输出 行,每行对应萌萌的一个问题的答案。
样例输入 #1
4
1 2 ab
2 4 ac
1 3 bc
3
1 4 a
3 4 b
3 2 ab
样例输出 #1
2
1
1
数据范围
对于 的数据,,输入所有字符串长度不超过 且只包含 a~z 的小写字母。
知识点与难度
本题涉及的知识点从属于 CSP-S,难度(CF Rating):1950。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1 | 样例 |
| 1 | 20 | 2~7 | 小规模 N,Q≤500 / 特殊: U=V同点路径长度为0 / 特殊: 所有边串完全相同 |
| 2 | 8~13 | 中等规模 N,Q≤10000 / Hack: 菊花图与二叉树混合跨LCA折返路径前缀统计 | |
| 3 | 25 | 14~19 | 大规模 N=100000,Q=100000 深度100000退化长链防递归爆栈+可持久化字典树测试 |
| 4 | 20~25 | 满规模 N=100000,Q=100000 满长10字符高密度公共前缀极限压力测试 |
出处:原题链接