교통 체계

시간 제한2초메모리 제한512 MB

요약
도시와 도로로 이루어진 연결 그래프에서 특정 도로 하나를 지우거나 한 도시에 연결된 모든 도로를 지운 뒤에도 두 도시가 서로 연결되는지 묻는 질의들에 답합니다.
난이도

어려움10점 중 8점

유형
그래프, DFS, 트리, 유니온 파인드
정답자
아직 제출이 없습니다

문제

N개의 도시와 서로 다른 두 도시를 잇는 E개의 양방향 도로로 이루어진 나라가 있다. 각 도시는 1번부터 N번까지 번호가 붙어 있다. 두 도시 사이에 도로가 있으면 어느 방향으로도 이동할 수 있다.

이 나라의 복잡한 교통 체계를 간소화하려고 한다. 간소화 방법은 두 가지이다. 하나는 특정한 도로 하나를 없애는 것이고, 다른 하나는 특정한 도시를 골라 그 도시로 들어오거나 그 도시에서 나가는 모든 도로를 없애는 것이다.

간소화가 이동 가능성에 어떤 영향을 주는지 확인하기 위해 여러 질문이 주어진다. 질문은 다음 두 종류 중 하나이다.

  1. 도시 A, B와 도시 G1, G2를 잇는 도로가 주어진다. G1과 G2 사이의 도로를 없앤 뒤에도 A에서 B로 이동할 수 있는가?
  2. 도시 A, B, C가 주어진다. C와 연결된 모든 도로를 없앤 뒤에도 A에서 B로 이동할 수 있는가?

현재 교통 체계와 질문들이 주어질 때, 각 질문에 대한 답을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 도시의 개수 N과 도로의 개수 E가 주어진다. (2 <= N <= 100,000, 1 <= E <= 500,000)

다음 E개의 줄에는 도로가 잇는 서로 다른 두 도시의 번호가 주어진다. 같은 도로는 두 번 이상 주어지지 않으며, 입력으로 주어지는 교통 체계에서는 임의의 두 도시 사이에 항상 이동 가능한 경로가 존재한다.

다음 줄에는 질문의 개수 Q가 주어진다. (1 <= Q <= 300,000)

다음 Q개의 줄에는 질문 정보가 주어진다. 각 줄의 첫 번째 수는 질문의 종류인 1 또는 2이다.

  • 종류 1인 경우 1 A B G1 G2가 주어진다. A와 B는 서로 다르고, G1과 G2 사이에는 항상 도로가 존재한다.
  • 종류 2인 경우 2 A B C가 주어진다. A, B, C는 서로 다른 도시이다.

출력

각 질문마다 답을 한 줄에 하나씩 출력한다. 간소화 후에도 이동할 수 있으면 yes, 이동할 수 없으면 no를 출력한다.

예제1

  1. 예제 1

    입력
    13 15
    1 2
    2 3
    3 5
    2 4
    4 6
    2 6
    1 4
    1 7
    7 8
    7 9
    7 10
    8 11
    8 12
    9 12
    12 13
    5
    1 5 13 1 2
    1 6 2 1 4
    1 13 6 7 8
    2 13 6 7
    2 13 6 8
    
    예상 출력
    yes
    yes
    yes
    no
    yes