loj#P3057. 「HNOI2019」校园旅行

「HNOI2019」校园旅行

题目描述

某学校的每个建筑都有一个独特的编号。一天你在校园里无聊,决定在校园内随意地漫步。

你已经在校园里呆过一段时间,对校园内每个建筑的编号非常熟悉,于是你情不自禁的把周围每个建筑的编号都记了下来——但其实你没有真的记下来,而是把每个建筑的编号除以 22 取余数得到 0011,作为该建筑的标记,多个建筑物的标记连在一起形成一个 0101 串。

你对这个串很感兴趣,尤其是对于这个串是回文串的情况,于是你决定研究这个问题。

学校可以看成一张图,建筑是图中的顶点,而某些顶点之间存在无向边。对于每个顶点我们有一个标记(00 或者 11)。每次你会选择图中两个顶点,你想知道这两个顶点之间是否存在一条路径使得路上经过的点的标记形成一个回文串

一个回文串是一个字符串使得它逆序之后形成的字符串和它自己相同,比如 01001010011001 都是回文串,而 0101110110 不是。注意长度为 11 的串总是回文串,因此如果询问的两个顶点相同,这样的路径总是存在。此外注意,经过的路径不一定为简单路径,也就是说每条边每个顶点都可以经过任意多次。

输入格式

第一行三个整数 n,m,qn,m,q,表示图中的顶点数和边数,以及询问数。

第二行为一个长度为 nn0101 串,其中第 nn 个字符表示第 ii 个顶点(即顶点 ii)的标记,点从 11 开始编号。

接下来 mm 行,每一行是两个整数 ui,viu_i,v_i,表示顶点 uiu_i 和顶点 viv_i 之间有一条无向边,不存在自环或者重边。

接下来 qq 行,每一行存在两个整数 xi,yix_i,y_i,表示询问顶点 xix_i 和顶点 yiy_i 的点之间是否有一条满足条件的路径。

输出格式

输出 qq 行,每行一个字符串 YES,或者 NO。输出 YES 表示满足条件的路径存在,输出 NO 表示不存在。

5 4 2
00010
4 5
1 3
4 2
2 5
3 5
1 3
NO
YES
10 11 10
0011011111
4 6
10 6
5 9
4 7
10 7
5 8
1 9
5 7
1 10
5 1
5 6
10 3
7 4
8 10
9 4
8 9
6 6
2 2
9 9
10 9
3 4
NO
YES
YES
NO
YES
YES
YES
YES
YES
NO

数据范围与提示

对于 30%30\% 的数据,1m1041 \le m \le 10^4

对于 70%70\% 的数据,1n3×103,1m5×1041\le n\le 3\times 10^3,1 \le m \le 5\times 10^4

对于 100%100\% 的数据,$1 \le n \le 5\times 10^3, 1 \le m \le 5\times 10^5, 1 \le q \le 10^5$。