| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 (추가 시간 없음) | 512 MB | 47 | 27 | 22 | 57.895% |
Bob와 Alice는 그래프에서 최단 경로를 찾는 게임을 즐겨한다.
동생 Bob은 아직 어려서 실수를 많이 하기 때문에 Alice는 Bob가 연습할 수 있도록 다음과 같은 문제를 제시했다.
먼저, 길이를 나타내는 정수 $L$을 정한 후, $0$부터 $10^L-1$ 까지의 총 $10^L$개의 양의 정수를 이용하여 아래 규칙에 따라 그래프를 만든다:
아래 그림은 $L = 2$ 인 경우 그래프의 일부를 보여준다.
위 규칙에 따라 그래프를 만든 뒤, Alice는 Bob에게 두 정점 $x$와 $y$사이의 최단 경로 중 사전 순으로 정렬했을 시 $K$번째에 해당하는 최단 경로를 찾아보라고 했다. 예를 들어 $L = 2$, $x = 37$, $y = 55$인 경우를 생각해보자. 이 경우 두 노드 사이의 최단 거리는 $4$이며, 아래와 같이 총 여섯 개의 최단 경로가 존재한다. 만약 $K = 3$이라면 정답은 $3$번째 최단 경로인 $37 - 36 - 46 - 56 - 55$가 된다.
입력으로 $L$, $K$, $x$, $y$가 주어졌을 때 Bob을 도와 $x$와 $y$사이의 최단 경로 중 사전 순으로 $K$번째 최단 경로를 구해보자. 만약 $x$와 $y$사이의 최단 경로의 개수가 $K$보다 작다면 "NO"를 출력하도록 한다.
첫 줄에 테스트 케이스의 수 $T$가 주어진다.
각 테스트 케이스의 입력은 한 줄에 $L$, $K$, $x$, $y$가 공백으로 구분되어 주어진다.
각 테스트 케이스의 정답을 각 줄에 출력한다.
$K$번째 최단 경로가 존재하는 경우 해당 최단 경로를 출력하고, 그렇지 않은 경우 "NO"를 출력한다 (따옴표 제외).
7 2 1 20 22 2 2 20 22 3 3 008 258 3 22 008 258 4 10 2022 3141 4 61 2022 3141 4 1000000000000000000 0000 9999
20 21 22 NO 008 018 028 038 048 148 248 258 NO 2022 2021 3021 3031 3041 3141 NO 0000 0001 0002 1002 1012 1022 1122 1123 1133 1143 1243 2243 3243 3244 4244 4254 4354 4364 5364 6364 6464 6474 6484 6584 6684 7684 7784 7785 7786 7787 7788 7888 7988 8988 8998 9998 9999
7 2 1 37 55 2 2 37 55 2 3 37 55 2 4 37 55 2 5 37 55 2 6 37 55 2 7 37 55
37 36 35 45 55 37 36 46 45 55 37 36 46 56 55 37 47 46 45 55 37 47 46 56 55 37 47 57 56 55 NO