提示: 欢迎访问OurACM平台。
Problem 1694 中国象棋II

Accept: 16    Submit: 83
Time Limit: 1000 mSec    Memory Limit : 32768 KB

Problem Description

象棋是由两人轮流走子,以“将死”或“困毙”对方将(帅)为胜的一种棋类运动,有着数以亿计的爱好者。它不仅能丰富文化生活,陶冶情操,更有助于开发智力,启迪思维,锻炼辨证分析能力和培养顽强的意志。
对局时,由执红棋的一方先走,双方轮流各走一着,直至分出胜、负、和,对局即终了。轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走一着。双方各走一着,称为一个回合。
凡走子直接攻击对方将帅者谓之“照着”,又称“照将”或“将军”。如果一方无论怎么走都会被照将,则称死棋。给你一个棋局,判断黑方能否解救。(既判断黑方再走一子,能不能避免被照将(黑方当前有可能没被将军),棋局保证开始时候黑方没有照将红方)。
象棋中各个棋子的英语单词如下:
  • 车:Rooks
  • 马:Knights (Mao)
  • 象/相:Elephants
  • 士/仕:Mandarins
  • 将/帅:King /General
  • 炮:Cannons (Pao)
  • 卒/兵:Pawns


Input

输入的第一行是一个数字n(n<100),表示输入棋局个数。
对于每个棋局:第一行有两个整数r,b,r表示红方棋子数,b表示黑方棋子数。接下来r行{int,char,string}表示红方棋子及位置;再接下来b行{int,char,string}表示黑方棋子及位置。如:1 E King 表示上图黑方将的位置。(我们保证各个棋局都是存在的)

Output

对于每个棋局,如果黑方能解救则输出”Yes!”否则”No!”。

Sample Input

1 2 1 5 E Rooks 10 D King 1 E King

Sample Output

Yes!

Source

FOJ月赛-2009年3月--- CCQ

Submit  Back  Status  Discuss