만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

카투스 변환

시간 제한3초메모리 제한2048 MB

요약
같은 정점 수와 간선 수를 가진 두 캑터스 그래프에서 첫 번째 그래프를 간선 제거와 간선 추가로 두 번째 그래프와 같게 만들 수 있는지 판단하고, 가능하면 연산 순서를 출력합니다.
난이도

어려움10점 중 9점

유형
그래프, 트리, DFS, 구현
정답자
아직 제출이 없습니다

문제

대학에서 캐롤라인은 카투스 그래프를 배우기 시작했다. 선생님은 학생들이 카투스의 정의를 제대로 이해했는지 확인하려고 다음 과제를 냈다.

정점 개수와 간선 개수가 같은 카투스 두 개가 주어진다. 다음 두 단계 연산을 최대 15 00015\,000번 사용해서 첫 번째 카투스를 두 번째 카투스로 바꿀 수 있는지 판단하라.

  • 첫 번째 카투스에서 임의의 간선 하나를 골라 제거한다. 이 단계 이후의 그래프는 카투스가 아닐 수도 있다.
  • 첫 번째 그래프에 존재하지 않는 임의의 간선 하나를 추가하여, 그래프가 카투스가 되도록 만든다.

연산은 두 단계를 합쳐서 하나이므로, 매번 반드시 두 단계를 모두 수행해야 한다.

변환이 가능하다면 최대 15 00015\,000번의 연산으로 가능하다는 것이 보장된다.

카투스는 연결된 무향 그래프이며, 모든 간선이 최대 하나의 단순 사이클에 속한다. 카투스에는 다중 간선과 자기 루프가 없다.

두 카투스가 같다는 것은 임의의 정점 쌍 vv와 uu (1≤v<u≤n1 \le v < u \le n)에 대해, 두 카투스 모두 간선 (v,u)(v, u)를 갖거나 모두 갖지 않는다는 뜻이다.

입력

첫 줄에 정수 nn과 mm이 주어진다 (3≤n≤10003 \le n \le 1000, n−1≤m≤⌊3(n−1)2⌋n - 1 \le m \le \lfloor \frac{3(n - 1)}{2} \rfloor). 두 값은 각각 카투스의 정점 개수와 간선 개수이다. 이어지는 2⋅m2 \cdot m개의 줄에 정수 uu와 vv (1≤u≠v≤n1 \le u \ne v \le n)가 한 쌍씩 주어지며, 이는 간선을 나타낸다. 처음 mm개의 줄은 첫 번째 카투스의 간선이고, 나머지 mm개의 줄은 두 번째 카투스의 간선이다.

출력

첫 번째 카투스를 두 번째 카투스로 변환할 수 없으면 "NO"만 한 줄에 출력한다.

변환할 수 있으면 첫 줄에 "YES"를 출력한다. 둘째 줄에는 연산 횟수 cc (0≤c≤15 0000 \le c \le 15\,000)를 출력한다. 이어지는 cc개의 줄에는 정수 w1w_1, w2w_2, w3w_3, w4w_4 (1≤wi≤n1 \le w_i \le n)를 한 줄에 네 개씩 출력한다. w1w_1과 w2w_2는 제거하는 간선의 양 끝점이고, w3w_3과 w4w_4는 추가하는 간선의 양 끝점이다.

예제2

  1. 예제 1

    입력
    5 5
    1 2
    3 1
    2 4
    3 4
    4 5
    1 2
    3 2
    3 1
    4 1
    3 5
    
    예상 출력
    YES
    3
    3 4 2 3
    5 4 3 5
    2 4 1 4
    
  2. 예제 2

    입력
    5 6
    1 2
    2 3
    1 3
    4 3
    3 5
    5 4
    1 2
    2 4
    4 1
    4 3
    3 5
    4 5
    
    예상 출력
    NO