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

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

평화 위원회

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

요약
각 정당에서 한 명씩 뽑아 서로 싫어하는 의원 쌍이 함께 들어가지 않게 하면서, 사전순으로 가장 앞선 명단을 출력하거나 불가능하면 NIE를 출력한다.
난이도

어려움10점 중 8점

유형
그래프, DFS, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

바이트랜드 의회는 평화 위원회를 구성하려고 한다. 정당은 모두 nn개이며, 각 정당은 정확히 두 명의 의원을 둔다. 의원은 11번부터 2n2n번까지 번호가 매겨져 있으며, ii번째 정당의 두 의원은 2i−12i-1번과 2i2i번이다.

위원회는 다음 두 조건을 모두 만족해야 한다.

  • 모든 정당에서 정확히 한 명의 의원이 위원회에 들어간다.
  • 서로 사이가 나쁜 의원 쌍이 있으며, 사이가 나쁜 두 의원은 동시에 위원회에 들어갈 수 없다.

정당 정보와 사이가 나쁜 의원 쌍이 주어질 때, 위원회를 구성할 수 있는지 판단하고, 가능하다면 그 구성원을 출력하여라.

입력

첫째 줄에 정당의 수 nn과 사이가 나쁜 쌍의 수 mm이 공백으로 구분되어 주어진다 (1≤n≤80001 \le n \le 8000, 0≤m≤200000 \le m \le 20000).

다음 mm개의 각 줄에는 서로 사이가 나쁜 두 의원의 번호 aa와 bb가 주어진다 (1≤a<b≤2n1 \le a < b \le 2n).

출력

위원회를 구성할 수 없으면 한 줄에 NIE(폴란드어로 ‘아니오’)를 출력한다. 구성할 수 있으면 위원회에 들어갈 의원들의 번호 nn개를 오름차순으로 한 줄에 하나씩 출력한다. 위원회를 만드는 방법이 여러 가지라면, 사전순으로 가장 앞서는 목록(위에서 아래로 각 줄의 수를 비교했을 때 가장 작은 순서)을 출력한다.

예제1

  1. 예제 1

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