페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
1000
ms
메모리 제한
2048
MB
헝가리에는 개의 도시가 있고 각각 부터 까지 번호가 매겨져 있다.
도시들은 개의 양방향 도로로 연결되어 있고 도로들은 각각 부터 까지 번호가 매겨져 있다. 인 모든 에 대해 도로 는 도시 와 도시 를 연결하고 길이는 이다. 즉, 한 도시에서 다른 도시로 여행하는 데 만큼의 시간이 걸린다. 각 도로는 서로 다른 두 도시를 연결하며, 한 쌍의 도시는 최대 하나의 도로로 연결된다.
서로 다른 두 도시 와 를 잇는 경로는 다음 조건을 만족하는 서로 다른 도시들 이다.
한 도시에서 다른 도시로 도로를 이용해서 여행하는 것은 항상 가능하다. 즉, 서로 다른 두 도시 사이에는 이를 연결하는 경로가 항상 있다. 또한 서로 다른 한 쌍의 도시마다 이 둘을 잇는 경로가 유일함을 보일 수 있다.
경로 의 길이는 경로상에 있는 연속한 도시들 사이를 잇는 개 도로의 길이의 총합이다.
헝가리에서는 많은 사람들이 두 도시에서 벌어지는 국경일 행사에 참여하기 위해서 여행한다. 행사가 끝나면 여행자들은 집으로 돌아온다. 헝가리 정부는 여행자들이 주민들을 피곤하지 않게 하기 위한 방법을 고안하였다. 각 도시마다 헝가리 정부는 음이 아닌 정수인 봉쇄 시간을 정하려 한다. 또 정부는 봉쇄 시간의 합은 이하가 되어야 한다고 정했다. 보다 정확하게는 이상 이하인 모든 에 대해서 도시 에 할당된 봉쇄 시간을 음이 아닌 정수 라고 할 때, 모든 의 합은 이하여야 한다.
도시 가 있고 각 도시마다 봉쇄 시간이 정해졌다고 가정하자. 도시 가 도시 에서 도달 가능하다는 것은 이거나 두 도시 사이의 경로 (이고 )가 다음 조건들을 모두 만족한다는 것과 같은 뜻이다.
올해 국경일 행사는 두 도시 와 에서 치러진다. 각 도시마다 봉쇄 시간을 정했을 때 편의성 점수는 다음 두 수의 합으로 정의된다.
어떤 도시가 도시 에서도 도달 가능하고 도시 에서도 도달 가능하다면 편의성 점수에 두 번 더해진다는 사실에 유의하라.
당신이 할 일은 봉쇄 시간을 적절히 정해서 얻을 수 있는 편의성 점수의 최댓값을 구하는 것이다.
다음 함수를 구현해야 한다.
int max_score(int N, int X, int Y, int64 K, int[] U, int[] V, int[] W)
다음 호출을 생각해 보자.
max_score(7, 0, 2, 10, [0, 0, 1, 2, 2, 5], [1, 3, 2, 4, 5, 6], [2, 3, 4, 2, 5, 3])
이는 다음 도로망에 대응한다.

봉쇄 시간이 다음과 같이 할당되었다고 가정하자.
| 도시 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| 봉쇄 시간 | 0 | 4 | 0 | 3 | 2 | 0 | 0 |
봉쇄 시간의 총합은 로 이하이다. 도시 은 도시 ()에서 도달 가능하며 도시 는 도시 ()에서 도달 가능하다. 따라서 편의성 점수는 이다. 어떻게 봉쇄 시간을 정하더라도 편의성 점수를 보다 크게 할 수 없다. 따라서 이 함수의 리턴값은 이어야 한다.
또 다음 호출을 생각해 보자.
max_score(4, 0, 3, 20, [0, 1, 2], [1, 2, 3], [18, 1, 19])
이는 다음 도로망에 대응한다.

봉쇄 시간이 다음과 같이 할당되었다고 가정하자.
| 도시 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| 봉쇄 시간 | 0 | 1 | 19 | 0 |
도시 은 도시 ()에서 도달 가능하며 도시 은 도시 ()에서 도달 가능하다. 따라서 편의성 점수는 이다. 어떻게 봉쇄 시간을 정하더라도 편의성 점수를 보다 크게 할 수 없다. 따라서 이 함수의 리턴값은 이어야 한다.
max_score의 모든 호출에 대한 값의 합이다.인 각각의 에 대해서 도로 가 도시 와 도시 을 연결한다면 이 도로망이 선형이라고 한다.
line 1: C
개의 시나리오에 대한 설명이 다음에 따라온다. 샘플 그레이더는 각 시나리오에 대한 정보를 다음 양식으로 읽는다.
line 1: N X Y K line 2 + j (0 <= j <= N - 2): U[j] V[j] W[j]
각 시나리오에 대해서 샘플 그레이더는 한 줄을 다음 양식으로 출력한다.
line 1: max_score의 리턴값
2
7 0 2 10
0 1 2
0 3 3
1 2 4
2 4 2
2 5 5
5 6 3
4 0 3 20
0 1 18
1 2 1
2 3 19
6
3
가 시나리오의 수, 즉 max_score를 호출한 횟수라고 하자.
International Olympiad in Informatics (IOI) 2023, official task package and official Korean statement.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.