#codefestival2015exa. [codefestival_2015_ex_a]高橋王国と青木王国

[codefestival_2015_ex_a]高橋王国と青木王国

问题描述

AtCoder王国有NN个城市。每个城市从1到NN编号,高桥君住在第1个城市,青木君住在第N个城市。

这些城市之间由MM条道路连接。每条道路都是单向的,但两个城市之间可能存在多条道路。特别地,如果一条道路的正方向和反方向各有一条道路,那么可以双向移动。

有传言说,AtCoder国被分割成高桥王国和青木王国。据说分割是根据以下条件进行的:

  • NN个城市中的一部分属于高桥王国,其余城市属于青木王国。
  • 高桥王国必须包含城市1,青木王国必须包含城市N。
  • 从高桥王国到青木王国的道路将全部撤销。也就是说,所有道路的起点都属于高桥王国,终点都属于青木王国。
  • 分割的目标是删除最少数量的道路。

满足上述条件的分割方法并不唯一。因此,许多人担心国家将如何被分割。

因此,您的任务是创建一个程序来回答公民的问题。每个问题都会给出两个城市作为问题,对于每个问题,请编写一个程序来回答它们是否有可能属于同一个国家以及是否有可能属于不同的国家。


输入

输入通过标准输入给出,具体格式如下。

NN MM a1a_1 b1b_1 a2a_2 b2b_2 : aMa_M bMb_M QQ c1c_1 d1d_1 c2c_2 d2d_2 : cQc_Q dQd_Q

  • 第1行包含城市数量NN (1N5,0001 \leq N \leq 5,000)和道路数量MM (1M50,0001 \leq M \leq 50,000)。
  • 第2到第M+1M+1行中,第ii行包含表示第ii条道路的两个整数ai,bia_i,b_i (1ai,biN1 \leq a_i, b_i \leq N, aibia_i \neq b_i)。表示道路ii从城市aia_i到达城市bib_i
  • M+2M+2行包含整数QQ (1Q100,0001 \leq Q \leq 100,000),表示公民提出的问题数量。
  • M+3M+3行到第M+2+QM+2+Q行中,第jj行包含表示第jj个问题的两个整数cj,djc_j, d_j (1cj,djN1 \leq c_j, d_j \leq N, cjdjc_j \neq d_j)。表示第jj个问题涉及城市cjc_j和城市djd_j

输出

对于每个问题,输出一行答案。对于第jj个问题,回答由两个词组成,用空格分隔。

  • 第一个词表示城市cjc_j和城市djd_j可能属于同一个国家。如果可能属于同一个国家,则输出YES;否则,输出NO。
  • 第二个词表示城市cjc_j和城市djd_j可能属于不同的国家。如果可能属于不同的国家,则输出YES;否则,输出NO。

输出末尾要有换行符。

部分得分

本问题设有部分得分。

  • 如果能够正确解答满足N100,M1,000,Q100N \leq 100, M \leq 1,000, Q \leq 100的数据集,则可获得20分。
  • 如果能够正确解答附加约束条件下的数据集,则除了上述20分外,还能获得额外的80分。

输入样例1


3 5
1 2
1 2
1 2
2 3
2 3
3
1 2
2 3
1 3

输出样例1


YES NO
NO YES
NO YES

请注意,两个城市之间可能存在多条道路。


输入样例2


3 5
3 2
3 2
3 2
2 1
2 1
3
1 2
2 3
1 3

输出样例2


YES YES
YES YES
NO YES

请注意,只有从高桥王国到青木王国的道路会被撤销。


输入样例3


8 10
1 2
1 3
1 4
2 3
3 5
4 6
5 8
6 7
6 8
7 8
7
1 2
2 3
2 6
3 6
4 5
5 6
6 7

输出样例3


YES NO
YES NO
NO YES
NO YES
YES YES
YES YES
YES NO