N과 연결 수 상한, 전력 상한이 주어질 때 수집기와 분배기를 두어 모든 조건을 만족하는 2단 라우터 그래프를 구성한다.
보통5그래프구현수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB라우터는 노드와, 서로 다른 두 노드를 잇는 단방향 연결로 이루어진다.
노드 X가 노드 Y로 데이터를 보낼 수 있다는 것은, X=Y이거나, X가 데이터를 보낼 수 있는 노드 Z가 있고 Z에서 Y로 가는 연결이 있다는 뜻이다. X=Y이고 X가 Y로 데이터를 보낼 수 있을 때, X에서 Y로 가는 데이터 경로는 A1=X, AL=Y인 연결의 집합 {(A1,A2),(A2,A3),…,(AL−1,AL)} (L≥2)이다.
라우터는 다음을 모두 만족할 때 제대로 동작한다.
노드 X의 전력은 PX=INX×OUTX로 정의한다. INX는 X로 데이터를 보낼 수 있는 입력 노드의 수, OUTX는 X에게서 데이터를 받을 수 있는 출력 노드의 수다. 라우터의 최대 전력은 Pmax=max(P1,P2,…,P2N+K)이다.
N, Mlim, Plim이 주어진다. 출력 항목이 설명하는 방법으로 라우터를 만들어라. 이 라우터는 제대로 동작하고, 연결을 Mlim개 이하로 쓰며, 최대 전력이 Plim 이하이고, 노드를 모두 합쳐 500000개 이하로 쓴다.
첫째 줄에 정수 N, Mlim, Plim이 공백으로 구분되어 주어진다. (1≤N≤5000, N≤Plim≤109, 1≤Mlim≤500000)
출력 항목의 라우터가 쓰는 연결의 수는 Mlim 이하다.
s=min(N,⌊Plim/N⌋), g=⌈N/s⌉이라고 하자. 라우터는 다음과 같이 만든다.
첫째 줄에 노드의 총 개수 Ntot=2N+2g와 연결의 수 M=2N+g2를 공백으로 구분해 출력한다. 다음 M개의 줄에는 노드 X에서 노드 Y로 가는 연결을 한 줄에 하나씩 두 정수 X, Y로 출력한다. 연결은 X가 증가하는 순서로, X가 같으면 Y가 증가하는 순서로 출력한다.