AT_ijpc2015_j.Верный
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
IOI2015 举办地阿拉木图,曾经被称为 Верный(维尔尼)。在俄语中,这个名字有「忠诚的」或「可信赖的」的意思。受此启发,joisino 决定测验一下她的下属对她的忠诚度。
为此,她准备了两棵树,分别命名为树 X 和树 Y。每棵树的顶点编号从 0 到 (树的顶点数−1),且每个顶点上都有一个从 'a' 到 'j' 的小写字母。
接下来将执行 Q 次操作:
- 在树 X 的某路径上,交换从 A 到 B 上(包括 A 和 B)的两个指定字母。例如,将 ′a′ 和 ′b′ 交换,会导致路径上的所有 ′a′ 变成 ′b′,′b′ 变成 ′a′。
- 在树 Y 的某路径上,交换从 A 到 B 上(包括 A 和 B)的两个指定字母。同样地,将 ′a′ 和 ′b′ 交换,会导致路径上的所有 ′a′ 变成 ′b′,′b′ 变成 ′a′。
- 比较树 X 上从 A 到 B 的路径(包括 A 和 B)上的字母组成的字符串,和树 Y 上从 C 到 D 的路径(包括 C 和 D)的字母组成的字符串,看它们是否相同。
- 回退到进行了 a 次操作后的状态。这里 0≤a≤(当前已处理的操作次数)。
输入格式
输入数据包括:
- 树 X 的数据
- 树 Y 的数据
- 查询次数 Q
- 接下来的 Q 个查询
每棵树的数据结构如下:
- 首先,给出一个整数 N,表示树的顶点数。
- 接着是一串长度为 N 的字符串 s。其中第 i+1 个字符表示顶点 i 上的字母。
- 随后的 N−1 行,每行由两个整数 ai 和 bi 组成,表示在顶点 ai 和 bi 之间有一条边。
每个查询由以下格式组成:
- 当查询类型 t=0 时,之后有整数 a,b 和字符 c,d。表示在树 X 的顶点 a 到顶点 b 之间,将所有 c 替换为 d,所有 d 替换为 c。
- 当查询类型 t=1 时,结构与 t=0 相同,只不过是对树 Y 进行上述操作。
- 当查询类型 t=2 时,之后有四个整数 a,b,c,d。表示判断树 X 上从 a 到 b 的路径上的字母组成的字符串,与树 Y 上从 c 到 d 的路径组成的字符串是否相同。
- 当查询类型 t=3 时,有一个整数 a。表示将两棵树的状态恢复到执行了 a 次查询后的状态。
输出格式
对于每个类型为 t=2 的查询,如果两串字符串相同,则输出 YES;否则输出 NO。注意最后一行输出之后要换行。
输入输出样例
输入#1
4 ckdl 0 2 0 1 1 3 4 lckd 2 1 1 3 2 0 4 2 2 3 3 0 2 2 3 0 3 2 3 2 0 3 2 3 2 3 0
输出#1
YES NO YES NO
说明/提示
- 1≤Q≤105
- 1≤(树X的顶点数)≤105
- 1≤(树Y的顶点数)≤105
此问题没有部分分数,所有测试用例都通过可得满分 100 分。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?