#P16961. [SGU392] Cyclic Troubles

[SGU392] Cyclic Troubles

题目描述

Berland 国王收到了一款名叫 “Bercycles” 的单人游戏。

游戏在一个 R×CR\times C 的矩形网格上进行。每个格子中包含:

  • 一个小写英文字母;
  • 一个方向箭头,指向左、右、上、下四个方向之一。

玩家可以任选一个格子作为起点。每一步:

  1. 记录当前格子中的字母;
  2. 按照当前格子的箭头移动到相邻格子。

玩家可以在任意时刻主动停止。如果按照箭头走出了网格,则游戏自动结束,之后不能继续移动。

整个过程中记录下来的字母依次组成一个单词。

现在给出若干查询单词。对于每个单词,请判断是否存在一个起点,使得从该起点出发能够恰好读出这个单词。如果存在多个起点,需要输出行号最小的;若行号相同,再输出列号最小的。

由于单词可能非常长,输入采用压缩形式。压缩串中允许出现片段 (F)K,表示非空字母串 FF 连续重复 KK 次。括号不会嵌套,重复次数没有前导零。

例如:

a(xy)2y(ab)3abz

表示:

axyxyyababababz

输入格式

第一行包含两个整数 R,CR,C

1R,C301\le R,C\le30

接下来 RR 行,每行恰好包含 CC 个字符,描述每个格子的箭头。字符属于 <>^v

再接下来 RR 行,每行恰好包含 CC 个小写英文字母,描述每个格子的字母。

然后输入一个整数 QQ

1Q501\le Q\le50

接下来 QQ 行,每行一个压缩后的查询串。

每个压缩串长度在 1120002000 之间;解压后的实际长度不超过 10910^9

输入保证所有压缩串格式合法,括号不嵌套,重复次数为正整数且没有前导零。

输出格式

对于每个查询输出一行。

如果能够读出该单词,输出:

YES (X,Y)

其中 (X,Y)(X,Y) 为符合条件的最小起点:优先最小化 XX,再最小化 YY

如果不存在合法起点,输出:

NO

样例

2 4
>>>v
<^<<
abcd
efgh
6
abcdhgf
bcdhgf
(bcdhgf)100
a(bcdhgf)100bc
b(cdhgfbc)1d
hello
YES (1,1)
YES (1,2)
YES (1,2)
YES (1,1)
YES (1,2)
NO