만드는 중입니다

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

라우터 7

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

요약
입력 N개에서 출력 N개로 가는 라우터 그래프를 만듭니다. 각 입력에서 각 출력까지 경로는 하나뿐이어야 하고, 간선 수와 최대 전력 제한을 지켜야 합니다.
난이도

어려움10점 중 8점

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

문제

Henry와 Hetty는 최근 Piatra Neamț의 한 네트워킹 회사에 채용되었다. 그들의 첫 프로젝트는 Connect Ethernet Operating Interface 2016이라는 새로운 라우터를 만드는 것이다. 이 라우터는 다음으로 구성된다.

  • 입력 노드 NN개. 1번부터 NN번까지 번호가 붙는다.
  • 출력 노드 NN개. N+1N+1번부터 2×N2 \times N번까지 번호가 붙는다.
  • 내부 노드 KK개. 2×N+12 \times N+1번부터 2×N+K2 \times N+K번까지 번호가 붙는다.
  • 서로 다른 두 노드를 잇는 단방향 직접 연결 MM개.

노드 XX는 X=YX = Y이거나, XX가 데이터를 보낼 수 있는 노드 ZZ가 있고 ZZ에서 YY로 이어지는 직접 연결이 있으면 노드 YY에 데이터를 보낼 수 있다.

XX가 YY에 데이터를 보낼 수 있고 X≠YX \neq Y이면, XX에서 YY까지의 데이터 경로는 어떤 L≥2L \ge 2에 대해 A1=XA_1 = X, AL=YA_L = Y를 만족하는 직접 연결의 집합 {(A1,A2),(A2,A3),…,(AL−1,AL)}\{(A_1, A_2), (A_2, A_3), \ldots, (A_{L-1}, A_L)\}이다.

라우터가 올바르게 동작하려면 다음 조건을 만족해야 한다.

  • 각 입력 노드는 모든 출력 노드에 데이터를 보낼 수 있다.
  • 각 입력 노드는 자기 자신에게서만 데이터를 받을 수 있다.
  • 각 출력 노드는 자기 자신에게만 데이터를 보낼 수 있다.
  • 서로 다른 두 노드 XX, YY에 대해 XX가 YY에 데이터를 보낼 수 있으면, YY는 XX에 데이터를 보낼 수 없다.
  • 서로 다른 두 노드 XX, YY에 대해 XX가 YY에 데이터를 보낼 수 있으면, XX에서 YY까지의 데이터 경로는 하나뿐이다. 특히 두 노드는 직접 연결로 최대 한 번만 이어질 수 있다.

노드 XX를 동작시키는 데 필요한 전력은 PX=INX×OUTXP_X = IN_X \times OUT_X이다. 여기서 INXIN_X는 XX에 데이터를 보낼 수 있는 입력 노드의 수이고, OUTXOUT_X는 XX로부터 데이터를 받을 수 있는 출력 노드의 수이다. 라우터가 사용하는 최대 전력은 Pmax=max⁡(P1,P2,…,P2×N+K)P_{max} = \max(P_1, P_2, \ldots, P_{2 \times N+K})이다.

이 사양에 맞는 라우터는 다음 조건을 만족해야 한다.

  • 입력 노드와 출력 노드가 정확히 NN개이다.
  • 직접 연결을 MlimM_{lim}개 이하로 사용한다.
  • 최대 전력이 PlimP_{lim} 이하이다.
  • 전체 노드 수는 500000 이하이다(Ntot=2×N+K≤500000N_{tot} = 2 \times N + K \le 500000).

입력

첫 줄에 세 정수 NN, MlimM_{lim}, PlimP_{lim}이 주어진다. 각각 입력 노드와 출력 노드의 수, 직접 연결의 최대 개수, 라우터가 사용하는 최대 전력이다.

이 테스트에서는 N=9978N = 9978, Mlim=100000M_{lim} = 100000, Plim=100000P_{lim} = 100000이다.

출력

첫 줄에 Ntot=2×N+KN_{tot} = 2 \times N + K와 MM을 공백으로 구분해 출력한다. 이어서 MM개의 줄에 각각 두 정수 XX, YY를 출력한다. 이는 노드 XX에서 노드 YY로 가는 직접 연결을 만들었다는 뜻이다.

예제1

  1. 예제 1

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