현수시티

각 간선이 많아야 하나의 사이클에 속하는 연결된 선인장 그래프에서 간선을 켜고 끄며 두 정점의 연결 여부를 묻는 질의에 답한다.

어려움8그래프DFS트리유니온 파인드아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

경기과학고는 수원시 장안구 송죽동에 세워져 있다. 하지만 여러분이 아는 송죽동이 전부가 아니다. 여러분이 잠든 사이, 송죽동은 음침하고 위험한 도시 현수시티의 일부가 된다.

현수시티는 어둠에 잠긴 무서운 곳이지만, 시장 현수는 무서운 사람이 아니다. 그는 단지 어두운 것이 좋아서 현수시티를 세웠을 뿐인데, 어둡다는 이유로 사람들이 모두 기피하다 보니 범죄의 온상이 되어 버렸다.

현수시티에는 11번부터 NN번까지 번호가 붙은 교차로 NN개가 있고, 도로 MM개가 교차로를 잇는다. 어느 두 교차로 사이든 도로를 따라 오갈 수 있다. 착한 현수는 모든 도로에 가로등을 하나씩 설치하고, 사람들이 길을 잃지 않도록 모든 도로가 최대 한 개의 사이클에만 속하게 도시를 설계했다.

현수에게는 요즘 새로운 고민이 생겼다. 도로의 가로등이 자꾸 고장나는 것이다. 고장나는 대로 고치고는 있지만 역부족이다. 가로등이 꺼진 도로를 지나다니는 것은 정말 위험하므로, 현수는 시민이 가로등이 켜진 도로로만 다니기를 바란다. 그래서 어떤 두 교차로 사이를 가로등이 켜진 도로로만 오갈 수 있는지 실시간으로 알려주는 앱을 만들려고 한다.

현수는 바빠서 앱을 만드는 일을 당신에게 맡겼다. 현수를 도와주자!

입력

첫째 줄에 교차로의 개수 NN (1N2000001 \le N \le 200\,000)과 도로의 개수 MM (N1M200000N-1 \le M \le 200\,000)이 주어진다.

다음 MM개 줄에는 각 도로가 잇는 두 교차로의 번호 uuvv가 주어진다. (1u,vN1 \le u, v \le N)

같은 두 교차로를 잇는 도로가 두 개 이상 주어지는 경우는 없고, 자기 자신으로 돌아오는 도로도 없다. 모든 도로가 최대 한 개의 사이클에만 속함이 보장된다.

다음 줄에는 입력에서 ii번째로 주어진 도로의 가로등이 작동하는지가 순서대로 공백을 사이에 두고 주어진다. 작동하면 11, 고장났으면 00이다.

다음 줄에는 앱에 들어오는 갱신과 질의의 수 QQ (1Q2000001 \le Q \le 200\,000)가 주어진다.

다음 QQ개 줄에는 각 갱신 또는 질의의 정보가 순서대로 주어진다. 각 줄에는 수가 두 개 또는 세 개 주어지고, 의미는 다음과 같다.

11 ii : 입력에서 ii번째로 주어진 도로에 있는 가로등의 상태가 바뀐다. 고장났다면 고쳐지고, 작동 중이었다면 고장난다. (1iM1 \le i \le M)

22 aa bb : 현재 가로등 상태에서 aa번 교차로와 bb번 교차로 사이를 가로등이 켜진 도로로만 오갈 수 있는지 묻는다. aabb가 같은 교차로일 수도 있다. (1a,bN1 \le a, b \le N)

출력

22로 시작하는 질의마다 한 줄씩 출력한다. 해당하는 두 교차로를 가로등이 켜진 도로로만 오갈 수 있다면 YES를, 아니면 NO를 출력한다.