입력과 출력을 각각 g개의 그룹으로 나누고, 2Ng개의 방향 간선을 출력해 라우터를 구성하는 문제입니다.
쉬움3그래프구현수학시뮬레이션아직 제출이 없습니다시간 제한2초메모리 제한512 MB헨리와 헤티는 네트워크 장비 회사에 입사해 새 라우터를 설계한다. 라우터의 구성은 다음과 같다.
노드 X가 노드 Y로 데이터를 보낼 수 있다는 말은 (Y가 X에게서 데이터를 받을 수 있다는 말과 같다) 다음 중 하나가 성립한다는 뜻이다.
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 이하이며, 전체 노드 수가 Ntot=2N+K≤500000인 라우터를 만들어라.
조건을 만족하는 라우터는 여러 가지이므로, 출력 형식에서 정한 3층 구성 규칙으로 만든 라우터 하나만 정답으로 인정한다.
첫째 줄에 정수 세 개 N, Mlim, Plim이 공백으로 구분되어 주어진다. N은 입력 노드의 수이자 출력 노드의 수, Mlim은 쓸 수 있는 직접 연결의 최대 개수, Plim은 라우터가 쓸 수 있는 최대 전력이다.
1≤N≤100000, 1≤Mlim≤500000, N≤Plim≤1010이다.
⌈N/g⌉2≤Plim을 만족하는 가장 작은 양의 정수를 g라고 할 때, 2Ng≤Mlim이고 2N+g2≤500000임이 보장된다.
이 라우터의 설계 사양은 N=1250, Mlim=500000, Plim=500000이고, 더 작은 사양도 입력으로 주어진다.
라우터를 다음 규칙대로 만든다.
첫째 줄에 Ntot과 M을 공백으로 구분해 출력한다. 이어지는 M개의 줄에는 직접 연결을 한 줄에 하나씩, X에서 Y로 가는 연결을 정수 X와 Y로 출력한다. 연결을 출력하는 순서는 다음과 같다.
이렇게 만든 라우터는 제대로 동작하고, 최대 전력은 max(N,⌈N/g⌉2)이다.