给定一棵以 1 为根的树,每个点携带一个大写字母。对每次询问 (u,v),取树上从 u 到 v 的简单路径,依次读出字母,判断这个序列是否包含子序列 "CAT";若不包含则输出 YES,否则输出 NO。
判断序列是否包含 "CAT" 可用一个 4 态自动机线性扫描完成:
C在一家公司的内部网络中,服务器通过树形拓扑连接,总共有 n 台服务器,编号为 1 到 n,其中编号为 1 的服务器是根节点。每台服务器上运行着一个特定的服务,用一个字母标识,第 i 台服务器上的标识字母记为 ci。
安全团队发现,如果一个攻击者能够按顺序访问三台服务器,使它们上面的标识字母依次为 C、A、T,就会形成一个危险子序列 "CAT",从而可能引发安全漏洞。
对于给定的两个服务器 u 和 v,称从 u 到 v 的简单路径是安全的,当且仅当将该路径上经过的服务器标识字母按顺序拼接得到的字符串中,不存在子序列 "CAT"。这里的子序列是指从原字符串中按顺序挑选若干个字符(可以不连续)形成的新序列。
现在有 q 次询问,每次给出一对服务器 (u,v),请你判断这条路径是否安全。
约束条件
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册