도로망 설계도 계산
시간 제한1초메모리 제한128 MB
도시 수 n과 지름 d가 주어질 때, 길이 d인 경로를 만들고 나머지 도시를 그 중간 정점에 매단 특정 트리를 출력한다.
문제
바이트맨(Byteman)이 바이트랜드(Byteland)를 자동차로 여행하려 하지만, 나라의 지도를 구하지 못했다. 그는 친구들에게서 바이트랜드 도로망에 관한 몇 가지 사실을 알아냈다.
- 바이트랜드에는 번부터 번까지 번호가 붙은 도시가 개 있다.
- 모든 도로는 양방향이며, 서로 다른 두 도시를 잇는다.
- 서로 다른 임의의 두 도시 사이에는, 도로 하나 이상으로 이루어지고 같은 도시를 두 번 지나지 않는 경로가 정확히 하나 존재한다.
- 그러한 경로 중 도로 수가 가장 많은 경로는 정확히 개의 도로로 이루어진다.
두 번째와 세 번째 조건을 합치면 이 도로망이 트리(tree)임을 알 수 있다. 즉 연결되어 있고 사이클이 없으며, 따라서 도로는 정확히 개다. 여기서 는 이 트리에서 가장 긴 경로에 놓인 도로의 수(트리의 지름)다.
바이트맨이 알아낸 모든 사실과 모순되지 않는 도로망 하나를 복원하거나, 그런 도로망이 존재하지 않음을 판정하라.
입력
입력의 유일한 줄에는 공백 하나로 구분된 두 정수 과 가 주어진다 (, ).
출력
조건을 만족하는 도로망이 존재하지 않으면 BRAK(폴란드어로 없음을 뜻함) 한 단어만 한 줄에 출력한다. 이는 이거나, 이면서 인 경우에 정확히 해당한다(도시가 셋 이상인 트리의 지름은 항상 이상이다).
그 외의 경우에는 정확히 개의 줄을 출력한다. 유효한 여러 설계도 중 다음의 특정한 설계도를 반드시 출력해야 한다.
- 먼저 도시 을 잇는 중심 사슬의 도로 개를 한 줄에 하나씩 순서대로 출력한다.
1 2, 그다음2 3, 이런 식으로d d+1까지 출력한다. - 이라 하자. 그런 다음 남은 각 도시 에 대해 부터 까지 증가하는 순서로 도로
c j를 출력하여, 도시 를 도시 에 직접 잇는다.
각 줄에는 하나의 양방향 도로가 잇는 서로 다른 두 도시의 번호를 공백 하나로 구분하여 적는다.
힌트
