"아라비 바자회에 가서 사랑에 빠진 사람에게 선물을 사러 가고 싶습니다. 그러나 너무 늦게 도착하면 모든 상점이 문을 닫고 아무것도 살 수 없습니다. 도와 드릴까요? 나? "
목표 : 모든 매장이 문을 닫기 전에 North Richmond Street에서 소년을 아라비에게 가져 가십시오.
실제 목표 : 매장이 문을 닫기 전에 소년이 아라비에 도착하지 않도록하십시오.
프로그램은 다음 형식으로 입력을받습니다.
<time> <map>
어디
<time>
소년이 여행을 보낼 수있는 최대 시간 (분)입니다. 양의 정수입니다.<map>
열차가 이용할 수있는 경로의 그래프입니다.
그래프 형식은 다음과 같습니다.
- 각 문장은 세미콜론으로 끝납니다.
- 맵의 노드 (스위치를 나타냄)는 단일 소문자를 사용하여 표시됩니다.
- 노드 사이의 경로는 구문으로 표시됩니다.
a,X,b
여기서X
경로의 가중치를 나타내는 정수입니다. 경로의 무게는 기차가 두 노드를 통과하는 데 걸리는 시간 (분)입니다. - Araby는로 표시
a
되고 North Richmond Street는로 표시됩니다n
. - 모든 경로는 양방향입니다.
예를 들어,이 그래프 (경로가 양방향 인 척) :
Wikimedia Commons를 통한 Artyom Kalinin의 이미지 . CC BY-SA 3.0 라이센스에 따라 사용됩니다 .
그래프 표기법에 다음과 같이 기록됩니다.
a,4,b;a,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,f;
이 입력에는가 없으므로 입력이 n
잘못되었습니다. 입력이 유효하지 않으면 프로그램이 무엇이든 할 수 있습니다.
입력 예는 다음과 같습니다.
21 n,4,b;n,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,a;
(이는 위에서 이미지처럼 동일한 그래프의 a
대체 n
및 f
교체 a
).
소년에서 받아야 n
에 a
21분 내. 그가 n
-> c
-> e
-> d
-> 경로를 타면 a
20 분 안에 도착합니다. 라우트를 쉼표로 구분 된 노드 목록으로 나타낼 수 있습니다.
n,c,e,d,a
반면에 n
-> b
-> c
-> e
-> d
-> 경로 a
를 사용하면 소년이 27 분이 걸리며 시간이 지나지 않습니다. 우리는 다음과 같이 경로를 나타낼 수 있습니다.
n,b,c,e,d,a
소년이 제 시간에하지 못하게하는 또 다른 가능한 경로는 다음과 같습니다.
n,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,e,d,a
프로그램은 위에서 설명한대로 입력을 가져와야합니다. 언뜻보기 에는 소년이 시간을 내도록 하는 경로를 출력하는 것처럼 보이지만 실제로 는 소년이 시간을 맞추지 못하게하는 경로를 출력합니다. 주어진 입력에 대해 항상 역 추적없이 경로가 존재하여 소년이 제 시간에 경로를 만들지 못하게합니다.
이것은 언더 핸드 인기 콘테스트이므로 가장 많은 표를 얻은 작품이 이깁니다. 버그를 숨기는 독창성에 대한 표가 수여됩니다. 덜 명확할수록 좋습니다.
다음은 프로그램을 테스트하기위한 샘플 그래프입니다.
입력:
12 a,2,c;a,2,e;b,5,c;b,4,d;b,11,e;d,7,n;e,4,n;
시각적 표현 (이 시각적 표현은 명확성을위한 것이며 문제의 일부가 아닙니다) :
가능한 출력 :
n,d,b,e,a
입력:
10 a,8,b;a,12,d;b,1,n;d,11,n;a,1,n;
다음은 그래프의 시각적 이미지입니다.
가능한 출력 :
n,d,a