Cactus Transformation

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

요약
꼭짓점과 변의 수가 같은 두 선인장 그래프가 주어질 때, 변 하나를 지우고 선인장이 되도록 없는 변 하나를 추가하는 연산만으로 첫 번째를 두 번째로 바꿀 수 있는지 판정하고 연산을 출력한다.
난이도

어려움10점 중 9점

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

문제

In the university, Caroline started to learn about cactus graphs. Her teacher wanted to check whether the students really understood the definition of a cactus or not and gave them the following problem as a home assignment:

You are given two cactuses with the same number of vertices and edges. Your task is to answer whether it is possible to transform the first cactus into the second one using only the following two-step operation at most 15,00015\\,000 times:

  • Pick an arbitrary edge from the first cactus and remove it (note that after this action, it's not necessary that graph is a cactus);
  • Add an arbitrary non-existing edge into the first graph, so that the graph becomes a cactus.

Note that the operation consists of both actions, so you must apply both actions.

It's guaranteed that if it's possible to transform the first cactus into the second one, then it can be done by using at most 15,00015\\,000 operations.

The teacher promised to give a perfect grade without an exam to anyone who solved the problem. Since the given cactuses are big and Caroline can't solve the problem independently in this short period of time, she asked you to help her write a program that solves the problem.

A cactus is a connected undirected graph in which every edge lies on at most one simple cycle. Intuitively, a cactus is a generalization of a tree where some cycles are allowed. Multiedges (multiple edges between a pair of vertices) and loops (edges that connect a vertex to itself) are not allowed in a cactus.

Two cactuses are called same if for any pair of vertices vv and uu (1≤v<u≤n1 \leq v < u \leq n), either there exists an edge (v,u)(v, u) in both cactuses or does not.

입력

The first line contains two integers nn and 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) --- the number of vertices and edges in the cactuses. Each of the next 2⋅m2 \cdot m lines contains two integers uu and vv (1≤u≠v≤n1 \le u \ne v \le n) --- the edges of the cactuses. The first mm lines represent the first cactus, while the second mm lines represent the second cactus.

출력

If transforming the first cactus into the second one is impossible, output the single line with the word "NO".

Otherwise, in the first line output the single word "YES". In the second line output an integer cc (0≤c≤15,0000 \leq c \leq 15\\,000) --- the number of operations. Each of the following cc lines should contain four integers w_iw\_i (1≤i≤41 \le i \le 4, 1≤w_i≤n1 \le w\_i \le n). The first two integers (w_1w\_1, w_2w\_2) represent the vertices of the removed edge, while the last two integers (w_3w\_3, w_4w\_4) represent the vertices of the added edge.

예제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