만드는 중입니다

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

그래프 게임

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

요약
정점 N개의 그래프에 간선을 하나씩 추가할 때 같은 간선을 반복하지 않고 홀수 사이클을 만들지 않은 채 K개를 추가할 수 있는지 판단합니다. 가능하면 추가한 간선 목록을 출력합니다.
난이도

보통10점 중 4점

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

문제

춘배는 그래프 게임을 하고 있다. 이 게임은 처음에 정점이 NN개이고 간선이 0개인 그래프에서 시작하며, 방향이 없는 간선을 하나씩 추가하면서 진행된다. 정점 번호는 1부터 NN까지이다.

간선을 추가할 때는 다음 조건을 만족해야 한다.

  • 이미 그래프에 정점 uu와 정점 vv를 연결하는 간선이 있다면, 정점 uu와 정점 vv를 연결하는 간선은 추가할 수 없다.
  • 정점 uu와 정점 vv를 연결하는 간선을 추가한 그래프에 포함된 간선의 수가 홀수 개인 사이클이 하나라도 존재한다면, 그 간선은 추가할 수 없다.

춘배가 조건을 만족하면서 그래프에 간선을 KK번 추가할 수 있다면 춘배의 승리이다. 그렇지 않다면 춘배의 패배이다.

춘배가 승리할 수 있는지 알아보고, 승리할 수 있다면 춘배가 추가해야 하는 간선 KK개를 찾아보자.

입력

첫째 줄에 NN과 KK가 공백으로 구분되어 주어진다. (1≤N≤100 0001 \le N \le 100\,000, 1≤K≤300 0001 \le K \le 300\,000)

출력

첫째 줄에 춘배가 승리할 수 있다면 YES를, 승리할 수 없다면 NO를 출력한다.

춘배가 승리할 수 있다면, 둘째 줄부터 KK개의 줄에 걸쳐 춘배가 그래프에 추가해야 하는 간선이 연결하는 두 정점을 한 줄에 하나씩, 추가하는 순서대로 출력한다.

예제2

  1. 예제 1

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

    입력
    3 3
    
    예상 출력
    NO