아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Гаджеты на дереве

시간 제한1초메모리 제한1024 MB

요약
양방향으로 펼친 트리에서 남은 방향 간선들을 끝점을 공유하는 두 간선씩 짝지어 분할하고, 불가능하면 No를 출력한다.
난이도

보통10점 중 7점

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

문제

Вася недавно придумал новое развлечение. Пусть дан связный ориентированный граф, состоящий из nn вершин и 2⋅(n−1)2 \cdot (n - 1) рёбер, причём для каждого ребра (u,v)(u, v), существует ребро (v,u)(v, u). Иначе говоря, граф был получен из дерева, в котором каждое ребро было расщеплено на два противоположных ребра, ориентированных в разные стороны.

Назовем гаджетом такую пару рёбер (e_1,e_2)(e\_1, e\_2), что конец e_1e\_1 совпадает с началом e_2e\_2 или наоборот (в частности, два противоположных друг другу ребра --- гаджет). Вася развлекается тем, что разбивает рёбра графа на непересекающиеся гаджеты. Конечно, ему легко удалось это сделать с  исходным графом.

Васин друг Петя удалил из дерева 2⋅k2 \cdot k ориентированных рёбер. Таким образом, в графе осталось m=2⋅(n−1)−2⋅km = 2 \cdot (n - 1) - 2 \cdot k ориентированных ребер. 

Теперь Вася хочет узнать, можно ли разбить оставшиеся ребра на непересекающиеся гаджеты, и, если можно, --- найти это разбиение. Помогите ему!

Рис. 1: Разбиение на гаджеты в первом примере

입력

В первой строке даны два целых числа nn и mm (2≤n≤150,0002 \le n \le 150\\,000, 2≤m≤2n−22 \le m \le 2n-2) --- число вершин и число оставшихся рёбер. Гарантируется, что число mm чётное. 

В следующих mm строках даны по два числа u_i,v_iu\_i, v\_i (1≤u_i,v_i≤n1 \le u\_i, v\_i \le n) --- начала и концы оставшихся рёбер.

출력

Если разбить рёбра на гаджеты нельзя, выведите <<No>>. 

В противном случае выведите <<Yes>>, а затем выведите m2\frac{m}{2} строк по 4 числа в каждой --- пары рёбер в каждом из гаджетов. Каждое ребро описывается двумя числами: своим началом и концом.

힌트

Разбиение на гаджеты в первом примере изображено на рисунке в условии.

Обратите внимание, что в этой задаче размер входных данных может быть большим. Рекомендуем ознакомиться с разделом <<Скорость ввода и выбор ОС>> в памятке участника.

예제3

  1. 예제 1

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

    입력
    4 4
    2 1
    2 3
    2 4
    4 2
    
    예상 출력
    No
    
  3. 예제 3

    입력
    4 4
    1 2
    2 1
    3 4
    4 3
    
    예상 출력
    Yes
    1 2 2 1
    3 4 4 3