포럼
문제 ICPC00014

C. 버스 투어

설명

당신이 바르샤바의 관광객이고, 시외의 놀라운 명소를 보러 가는 버스 투어를 예약했다고 하자. 버스는 먼저 (바르샤바는 큰 도시라 꽤 오랫동안) 시내를 돌며 각 호텔에서 사람들을 태운다. 그런 다음 놀라운 명소로 가고, 몇 시간 뒤 다시 시내로 돌아와 각 호텔에 들르며 이번에는 사람들을 내려 준다. 어째서인지 당신이 이렇게 할 때마다 항상 당신의 호텔이 승차 때는 첫 번째로, 하차 때는 마지막으로 방문된다. 즉, 그리 놀랍지 않은(n\(ot-so-am\)azing) 지역 호텔 관광을 두 번이나 견뎌야 한다는 뜻이다. (어떤 이유로 호텔을 정말 좋아하는 게 아니라면) 이는 분명 당신이 원하는 바가 아니니, 고쳐 보자. 관광 회사가 버스 투어 노선을 더 공정하게 짤 수 있도록 하는 소프트웨어를 개발할 것이다. 모두의 총 이동 거리가 더 길어질 수도 있지만, 공정한 건 공정한 거니까. 이 문제에는 출발 위치(관광 회사 본사), 승하차를 위해 방문해야 하는 \(h\)개의 호텔, 그리고 목적지(놀라운 명소)가 있다. 본사에서 출발해 모든 호텔을 거쳐 명소로 가고, 다시 (다른 순서일 수도 있는) 모든 호텔을 거쳐 마지막으로 본사로 돌아오는 경로를 찾아야 한다. (특히 당신을 포함한) 어떤 관광객도 호텔 관광 전체를 두 번 견디도록 강요받지 않게 하기 위해, 명소로 가는 길에 처음 ⌊\(h/2\)⌋개 안에 방문되는 모든 호텔은 돌아오는 길에도 처음 ⌊\(h/2\)⌋개 안에 방문되어야 한다. 이 제한을 지키면서 전체 버스 투어를 가능한 한 짧게 만들고자 한다. 이 제한 때문에 버스가 어떤 호텔 앞을 정차하지 않고 지나친 뒤(이는 방문으로 간주하지 않는다) 나중에 방문해야 할 수도 있음에 유의하라. 첫 번째 샘플 입력이 이를 보여 준다.

제약
입력 형식

각 테스트 케이스의 첫 줄에는 \(3 \le n \le 20\), \(2 \le m\)을 만족하는 두 정수 \(n\)\(m\)이 주어진다. \(n\)은 위치(호텔, 본사, 명소)의 수이고 \(m\)은 버스가 오갈 수 있는 위치 쌍의 수이다. \(n\)개의 서로 다른 위치에는 0부터 \(n - 1\)까지 번호가 붙어 있는데, 0은 본사, 1부터 \(n - 2\)까지는 호텔, \(n - 1\)은 명소이다. 어떤 위치 쌍 사이에도 직접 연결은 최대 하나이며, 어떤 위치에서든 다른 어떤 위치로도 (직접은 아닐 수 있지만) 이동할 수 있다고 가정한다. 첫 줄 다음에는 \(m\)개의 줄이 이어지며, 각 줄에는 \(0 \le u\), \(v \le n - 1\), \(u\)̸ = \(v\), \(1 \le t \le 3600\)을 만족하는 세 정수 \(u\), \(v\), \(t\)가 주어진다. 이는 버스가 위치 \(u\)\(v\) 사이를 (어느 방향으로든) \(t\)초에 직접 이동할 수 있음을 나타낸다.

출력 형식

각 테스트 케이스마다 케이스 번호와 가능한 가장 짧은 투어의 시간(초)을 출력한다.

예제 1
입력
5 4
0 1 10
1 2 20
2 3 30
3 4 40
4 6
0 1 1
0 2 1
0 3 1
1 2 1
1 3 1
2 3 1
출력
Case 1: 300
Case 2: 6
문제 정보

생성자가 기록되지 않았습니다.

출처 ICPC World Finals 2012

평가 및 의견

C. Bus Tour

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

C. Bus Tour

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8