입력 노드 N개와 출력 노드 N개를 가진 라우터 방향 그래프를 만든다. 경로가 유일해야 하고, 간선 수는 M_lim 이하, 노드 전력은 P_lim 이하이며, 간선 목록이 사전순으로 가장 작아야 한다.
어려움8그래프그리디구현조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB헨리와 헤티는 네트워크 장비 회사에 입사했다. 두 사람의 첫 과제는 새 라우터 Connect Ethernet Operating Interface 2016을 설계하는 일이다. 이 라우터는 다음으로 이루어진다.
노드 X가 노드 Y로 데이터를 보낼 수 있다는 말은 (Y가 X에서 데이터를 받을 수 있다는 말과 같다) 다음 중 하나가 성립한다는 뜻이다.
X=Y이고 X가 Y로 데이터를 보낼 수 있으면, X에서 Y로 가는 데이터 경로는 A1=X, AL=Y인 L≥2에 대해 직접 연결의 집합 {(A1,A2),(A2,A3),…,(AL−1,AL)}이다.
라우터가 제대로 동작하려면 다음을 모두 만족해야 한다.
노드 X를 동작시키는 데 드는 전력은 PX=INX×OUTX이다. INX는 X로 데이터를 보낼 수 있는 입력 노드의 개수, OUTX는 X에서 데이터를 받을 수 있는 출력 노드의 개수다. 라우터가 쓰는 최대 전력은 Pmax=max(P1,P2,…,P2N+K)이다.
다음 조건을 모두 만족하는 라우터를 만들어라.
조건을 만족하는 라우터는 여럿이므로, 그중 출력 형식에서 정의한 사전순으로 가장 작은 하나만 정답으로 인정한다.
첫째 줄에 정수 N, Mlim, Plim이 공백으로 구분되어 주어진다. N은 입력 노드의 개수이자 출력 노드의 개수, Mlim은 쓸 수 있는 직접 연결의 최대 개수, Plim은 라우터가 쓸 수 있는 최대 전력이다.
1≤N≤250, 1≤Mlim≤1000000, 1≤Plim≤1000000이다. 입력은 항상 N2≤Mlim과 N≤Plim을 만족한다.
첫째 줄에 전체 노드 수 Ntot=2N+K와 직접 연결의 개수 M을 공백으로 구분해 출력한다. 이어지는 M개의 줄에는 직접 연결을 한 줄에 하나씩 X Y 형식으로 출력한다. 이는 노드 X에서 노드 Y로 가는 직접 연결이 있다는 뜻이다. 직접 연결은 X가 커지는 순서로, X가 같으면 Y가 커지는 순서로 정렬해서 출력한다.
출력 전체를 정수 수열 Ntot,M,X1,Y1,…,XM,YM으로 볼 때, 조건을 만족하는 모든 라우터의 출력 중 사전순으로 가장 작은 것을 출력한다.