#abc452c. Fishbones
Fishbones
题目描述
高砂是一位艺术家,他制作了一个鱼骨形状的装置。
该装置包含 1 条脊椎骨 和 根肋骨(编号为 到 )。
他希望在每根骨头(共 根)上分别写一个字符串,满足以下所有条件:
- 写在脊椎骨上的字符串长度恰好为 。
- 对于每根肋骨 ():
- 写在肋骨 上的字符串长度为 ;
- 该字符串的第 个字符 等于 脊椎骨字符串的第 个字符。
- 所有写在骨头上的字符串都必须来自给定的字符串集合 (允许重复使用)。
现在,对于每个 ,请判断:
是否存在一种合法的书写方案,使得脊椎骨上写的字符串恰好是 ?
输入格式
输入从标准输入按如下格式给出:
N
A₁ B₁
A₂ B₂
⋮
A_N B_N
M
S₁
S₂
⋮
S_M
其中:
- 第一行是一个整数 ;
- 接下来 行,每行两个整数 和 ;
- 然后是一个整数 ;
- 接下来 行,每行一个字符串 。
输出格式
输出 行。
第 行输出:
Yes:如果存在一种合法方案,使得脊椎骨上的字符串为 ;No:否则。
样例输入 #1
5
5 3
5 2
4 1
5 1
3 2
8
retro
chris
itchy
tuna
crab
rock
cod
ash
样例输出 #1
Yes
Yes
No
No
No
No
No
No
样例说明 1
通过在肋骨 上分别写入 chris, retro, tuna, retro, cod,可以满足所有条件,且脊椎骨上为 retro。

retro的长度为 。- 每根肋骨验证如下:
- 肋骨 1:
chris(长度 5),第 3 个字符是'r',等于retro的第 1 个字符; - 肋骨 2:
retro(长度 5),第 2 个字符是'e',等于retro的第 2 个字符; - 肋骨 3:
tuna(长度 4),第 1 个字符是't',等于retro的第 3 个字符; - 肋骨 4:
retro(长度 5),第 1 个字符是'r',等于retro的第 4 个字符; - 肋骨 5:
cod(长度 3),第 2 个字符是'o',等于retro的第 5 个字符。
- 肋骨 1:
类似地,若脊椎骨为 chris,也可找到合法分配(如肋骨写 itchy, chris, rock, itchy, ash):

样例输入 #2
5
5 1
5 2
5 3
5 4
5 5
8
retro
chris
itchy
tuna
crab
rock
cod
ash
样例输出 #2
Yes
Yes
Yes
No
No
No
No
No
数据范围
- 每个 是仅由小写英文字母组成的字符串;
- 所有 互不相同。
提示
- 对每个候选脊椎字符串 ,先检查其长度是否为 。若不是,直接输出
No。 - 若长度正确,则对每根肋骨 ,检查是否存在某个 满足:
- (注意下标从 0 开始)
- 可预先按长度和字符位置建立索引,加速查询(因 较大,但字符串长度 ≤10,可行)。