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

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

Нужно меньше дорог!

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

요약
지켜야 하는 간선이 있는 그래프에서, 임의의 두 집 사이에 경로가 많아야 하나가 되도록 지울 수 있는 간선을 최소 개수만 지우거나, 불가능하면 NO를 출력한다.
난이도

보통10점 중 6점

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

문제

В мертвом городе живет nn зомби. Они живут в nn домах, соединенных mm дорогами, причём не обязательно можно дойти от каждого дома до любого другого по дорогам (пока дойдешь от одного дома до другого, уже все конечности отвалятся).

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

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

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

입력

В первой строке ввода через пробел даны целые числа nn и mm (1≤n≤1051 \leq n \leq 10^5, 1≤m≤1051 \leq m \leq 10^5) --- количество домов и дорог соответственно.

В следующих mm строках описаны дороги, по одной на строке. Описание ii-й дороги состоит из трех целых чисел u_iu\_i, v_iv\_i и t_it\_i (1≤u_i,v_i≤n1 \leq u\_i, v\_i \leq n; u_i≠v_iu\_i \neq v\_i; 0≤t_i≤10 \leq t\_i \leq 1). Это означает, что существует дорога между домами u_iu\_i и v_iv\_i, и эту дорогу нельзя разрушать, если t_i=1t\_i = 1, и можно, если t_i=0t\_i = 0.

Гарантируется что между любой парой домов существует не больше одной дороги.

출력

Выведите <<NO>> (без кавычек), если невозможно разрушить дороги так, чтобы удовлетворить потребности зомби.

Иначе в первой строке выведите <<YES>>, а затем целое число kk --- количество дорог, которые нужно разрушить. В следующих kk строках выведите пары целых чисел x_ix\_i и y_iy\_i, разделенные пробелом --- номера домов, дорогу между которыми вы разрушаете.

예제2

  1. 예제 1

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

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