만드는 중입니다

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

이름을 보존하는 네트워크

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

요약
정점 수가 10 이상 100 이하인 연결된 4-정규 단순 그래프를 설계합니다. 자기 동형 사상이 항등 사상뿐이어야 번호를 복원할 수 있습니다.
난이도

어려움10점 중 8점

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

문제

제한 시간: 10000 ms. 메모리 제한: 1024 MB.

한 연구 컨소시엄이 새 데이터센터를 짓고 있다. 데이터센터에서는 컴퓨터들이 함께 일하고 네트워크로 통신하도록 구성된다. 네트워크는 컴퓨터 사이의 양방향 직접 링크만으로 동작한다. 직접 링크로 연결되지 않은 두 컴퓨터 c1c_1과 c2c_2도, 연속한 링크 l1,l2,…,lkl_1, l_2, \ldots, l_k의 경로가 있으면 서로 통신할 수 있다. 이때 lil_i와 li+1l_{i+1}은 끝점을 공유하고, c1c_1은 l1l_1의 끝점이며, c2c_2는 lkl_k의 끝점이다. 두 컴퓨터 사이에는 직접 링크가 최대 하나만 있을 수 있다.

컨소시엄은 네트워크에 컴퓨터가 몇 대 있고 어떻게 연결되는지를 보여 주는 설계를 제출하라고 요청한다. 제출하는 설계는 다음 제한을 모두 지켜야 한다.

  1. 컴퓨터 수는 L대 이상 U대 이하여야 한다.
  2. 각 컴퓨터는 정확히 4개의 링크의 끝점이며, 이 링크들은 서로 다른 4대의 컴퓨터와 연결된다.
  3. 모든 컴퓨터 쌍은 위에서 설명한 방식으로 서로 통신할 수 있어야 한다.
  4. 시스템이 꺼져 있는 동안 ID가 무작위로 바뀌어도, 컴퓨터는 자신을 고유하게 식별할 수 있어야 한다.

마지막 조건을 자세히 말하면 이렇다. 설계의 NN대 컴퓨터에는 처음에 1부터 NN까지의 서로 다른 정수 ID가 하나씩 주어진다. 하지만 일정 시간 꺼졌다가 다시 켜지면 ID가 순열로 뒤섞일 수 있다. 각 컴퓨터는 여전히 1부터 NN까지의 정수를 하나씩 갖지만, 그 정수가 원래 값과 같다고 보장할 수 없다. 네트워크는 기존 직접 링크 정보만으로 원래 ID를 복원해야 한다.

자동 프로그램은 설계의 조건 1부터 3까지를 검증한 뒤, 다음과 같이 바뀐 사본을 돌려준다.

  • 고유 ID가 무작위로 뒤섞인다. 각 ID는 어느 컴퓨터에든 같은 확률로 놓인다.
  • 각 링크는 새 ID를 사용해 작은 ID를 먼저 적는다.
  • 링크 목록은 첫 번째 끝점의 오름차순으로 정렬하고, 같으면 두 번째 끝점의 오름차순으로 정렬한다.

ID가 어떻게 바뀌었는지 정확히 알아내야 한다. 프로그램은 1부터 NN까지 정수의 비밀 무작위 순열 ff를 만들고, 링크를 모두 제거한 빈 사본의 컴퓨터에 그 수들을 배정한다. 설계의 컴퓨터 ii와 jj 사이 링크마다, 사본에는 f(i)f(i)와 f(j)f(j) 사이 링크를 추가한다. 프로그램이 사용한 ff를 정확히 복원해야 한다. 같은 결과를 내는 다른 순열 f′f'을 반환하면, 복원한 ID가 원래 ID라고 보장할 수 없으므로 컨소시엄은 그 설계를 받아들이지 않는다.

10 이상 100 이하의 모든 NN에 대해, 위의 제한을 모두 지키고 서로 다른 두 순열 ff와 f′f'를 적용하면 서로 다른 링크 집합이 나오는 네트워크가 적어도 하나 존재한다.

제한

  • 1≤T≤301 \le T \le 30.

예제1

  1. 예제 1

    입력
    1
    10 10
    
    예상 출력
    10
    1 3
    1 5
    1 8
    1 10
    2 3
    2 4
    2 7
    2 9
    3 4
    3 10
    4 6
    4 8
    5 6
    5 8
    5 10
    6 7
    6 9
    7 8
    7 9
    9 10