#1215. 构建缩写
构建缩写
题目描述
Beaver(海狸)得到了一个包含 个单词的初始集合 。接着他执行了 次如下操作:
- Beaver 从集合 中选出由一个或多个单词组成的序列(同一个单词可以在序列中出现多次),并将这个序列的首字母拼接起来形成一个缩写。
- 然后,Beaver 将这个新生成的缩写加入到集合 中。在此后的操作中,这个缩写就可以像普通单词一样被使用了。
一个序列的缩写是由该序列中各个单词的首字母依次拼接而成的。例如,序列 birch OAK birch redwood 对应的缩写为 BOBR。
现在,给定集合 中的 个初始普通单词,以及 Beaver 生成的 个缩写。请你判断 Beaver 是否犯了错,即是否可能通过上述操作合法地生成给出的这 个缩写。 请注意,给出的这 个缩写不一定是按照 Beaver 生成它们的原始顺序给出的。
输入格式
第一行包含一个整数 ()—— 测试用例的数量。
对于每个测试用例:
- 第一行包含两个整数 和 ()—— 分别表示普通单词的数量和缩写的数量。
- 接下来 行,每行包含一个字符串 ()—— 表示初始的普通单词。
- 接下来 行,每行包含一个字符串 ()—— 表示 Beaver 生成的缩写。
所有的普通单词 均由小写英文字母组成,所有的缩写 均由大写英文字母组成。 在每个测试用例中,所有的 个字符串 互不相同。
输出格式
对于每个测试用例,如果存在一种合法的生成顺序能够得到这 个缩写,输出 YES;否则输出 NO。
样例输入 1
4
6 4
apple
grand
banana
great
cherry
good
AG
BG
CG
ABC
1 1
apple
AA
1 2
apple
A
AA
2 2
apple
avocado
B
BA
样例输出 1
YES
YES
YES
NO
说明
样例解释
- 在第一个测试用例中,合法的生成顺序可以是:
AG,BG,CG,最后是ABC。AG可由apple和grand生成。BG可由banana和great生成。CG可由cherry和good生成。ABC可由刚刚生成的三个缩写AG、BG、CG生成(它们的首字母依次为A、B、C)。
- 在第二个测试用例中,可以通过选用两次
apple直接生成缩写AA。 - 在第三个测试用例中,可以先选用一次
apple生成缩写A;然后用apple加上刚生成的缩写A生成缩写AA。 - 在第四个测试用例中,可以证明不存在任何一种合法的生成顺序。
数据范围
- 对于所有测试点,保证 。
- 保证每个测试用例中,所有字符串的总长度之和不超过 。
- 保证所有的 和 均为整数。