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

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

비슷한 배열

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

요약
비교하는 위치 쌍들이 주어질 때, 모든 원소가 서로 다른 배열과 같은 값이 두 번 이상 나오는 배열 중 주어진 모든 비교 결과가 일치하는 두 배열을 찾아 출력한다.
난이도

어려움10점 중 8점

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

문제

Vasya는 11부터 nn까지의 정수 nn개로 이루어진 배열을 가지고 있었다. 그는 서로 다른 위치 mm쌍을 골라 종이에 적었다. 그런 다음 그 위치에 있는 원소를 비교하고, 비교 결과를 다른 종이에 적었다. 각 쌍마다 "크다", "작다", "같다" 중 하나를 적었다.

몇 년 후 그는 첫 번째 종이를 찾았지만 두 번째 종이는 찾지 못했다. 또한 자신이 가지고 있던 배열도 기억하지 못한다. 특히 배열에 같은 원소가 있었는지도 기억하지 못한다. 그는 이 슬픈 이야기를 정보 선생님 Dr Helen에게 말했다.

선생님은 Vasya가 두 번째 종이를 찾더라도 배열에 같은 원소 두 개가 있었는지 알아낼 수 없을 수도 있다고 말했다.

이제 Vasya는 길이가 각각 nn인 정수 배열 두 개를 찾으려고 한다. 첫 번째 배열의 모든 원소는 서로 달라야 하고, 두 번째 배열에는 같은 원소 두 개가 있어야 한다. 첫 번째 종이에 적힌 각 위치 쌍에 대해, 첫 번째 배열의 해당 원소들과 두 번째 배열의 해당 원소들에 대한 비교 결과가 같아야 한다.

Vasya가 길이 nn인 두 배열을 찾도록 도와주거나, 주어진 위치 쌍들에 대해 그러한 배열이 존재하지 않음을 알아내라.

입력

첫째 줄에 정수 nn, mm이 주어진다. nn은 배열의 원소 수이고 mm은 Vasya가 수행한 비교의 수이다(1≤n≤100 0001 \le n \le 100\,000, 0≤m≤100 0000 \le m \le 100\,000).

다음 mm개 줄 각각에는 정수 aia_i, bib_i가 주어진다. 이는 ii번째 비교의 위치이다(1≤ai,bi≤n1 \le a_i, b_i \le n; ai≠bia_i \ne b_i). 같은 순서 없는 쌍은 입력에 많아야 한 번 주어진다.

출력

비교 결과가 같고, 첫 번째 배열의 모든 수가 서로 다르며, 두 번째 배열에 같은 수 두 개가 있는 두 배열이 존재하면 첫째 줄에 "YES"를 출력한다. 그렇지 않으면 "NO"를 출력한다.

배열이 존재하면 둘째 줄에 서로 다른 정수로 이루어진 배열을, 셋째 줄에 같은 원소 쌍이 적어도 하나 있는 배열을 출력한다. 배열의 원소는 11부터 nn까지의 정수여야 한다.

예제3

  1. 예제 1

    입력
    1 0
    
    예상 출력
    NO
    
  2. 예제 2

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

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