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

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

자기 쌍대 문서

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

요약
주어진 n에 대해 간선 목록이 비간선 목록과 일치하도록 만드는 순열이 존재하는 단순 그래프를 구성하거나, 존재하지 않으면 불가능을 출력한다.
난이도

보통10점 중 7점

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

문제

플랫랜디아의 정보국이 최근 비밀 문서 하나를 입수했다. 제1과 요원들은 이것이 이웃 나라 베를랜디아에서 도시 사이에 고속도로가 놓인 쌍들의 목록이라고 의심했다. 도시 번호를 베를랜디아의 도시에 대응시켜 보니 실제로 그렇게 할 수 있었다.

그런데 제2과 요원들은 다른 추측을 내놓았다. 이 목록이 베를랜디아에서 고속도로가 없는 도시 쌍들의 목록과 정확히 일치한다는 것이다. 도시 번호를 베를랜디아의 도시에 대응시켜 보니 이 역시 가능했다.

정보국장은 혼란에 빠졌다. 정말 그런 것이 가능한지 확인하기 위해 제3과에 임무를 맡겼다. 국장은 베를랜디아의 어떤 도시 쌍 사이에는 고속도로가 있고 어떤 도시 쌍 사이에는 없으면서, 자기 쌍대 목록이 존재할 수 있는지 알아내라고 요청했다. 1부터 nn까지의 정수 쌍들의 목록이 자기 쌍대라고 함은, 도시에 번호를 매겨 이 목록이 고속도로가 있는 모든 도시 쌍을 나타내도록 할 수 있고, 동시에 도시 번호를 다시 매겨 같은 목록이 고속도로가 없는 모든 도시 쌍을 나타내도록 할 수 있음을 뜻한다.

제3과 요원들이 이 문제를 해결하도록 도와라.

입력

입력 파일에는 하나의 수 nn이 주어진다. 이는 베를랜디아의 도시 수이다 (1≤n≤1001 \le n \le 100).

출력

답이 존재하지 않으면 출력 파일의 첫째 줄에 <<NO>>를 출력한다.

그렇지 않으면 첫째 줄에 <<YES>>를 출력한다. 둘째 줄에는 베를랜디아의 고속도로 수 mm을 출력한다. 도시에 1부터 nn까지 어떤 방식으로 번호를 매기자.

이어서 고속도로가 있는 도시 쌍을 나타내는 두 수를 한 줄에 하나씩 mm줄 출력한다. 한 쌍의 도시 사이에는 고속도로가 최대 하나 있어야 하고, 고속도로가 도시를 자기 자신과 연결해서는 안 된다.

다음 줄에는 nn개의 정수를 출력한다. 도시 ii에 대해 aia_i를 출력하는데, 위의 mm개 쌍 목록에서 모든 수 ii를 aia_i로 바꾸면 고속도로가 없는 모든 도시 쌍의 목록과 정확히 같아져야 한다. 모든 aia_i는 서로 달라야 한다.

예제2

  1. 예제 1

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

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