시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
4 초 | 1024 MB | 91 | 47 | 21 | 41.176% |
먼 미래, 인류는 수많은 외계 행성들에 진출하였다. 행성 X도 그 중 하나로, 우주 탐사 기업 MR은 행성 X에 기지들을 지어 탐사 및 자원 채취 활동을 수행하고 있었다.
행성 X에는 $N$개의 기지와 기지들을 잇는 $N-1$개의 양방향 통로가 있으며, 임의의 서로 다른 두 기지를 통로만을 사용하여 오갈 수 있다. 즉, 행성 X의 기지와 통로는 트리 구조를 이룬다.
기지에는 각각 $0$ 이상 $N - 1$ 이하의 서로 다른 번호가 붙어 있다. 또 모든 $0\le i \le N-2$에 대해서 $i$번 도로는 $U[i]$번 도시와 $V[i]$번 도시를 연결하며 통로의 길이는 $W[i]$ km이다.
어느덧 행성 X의 개발도 안정기에 접어들었다. 모든 기지와 통로를 유지하는 것은 비용이 많이 들기 때문에, MR에서는 일부 기지들만 남기고 나머지를 비활성화하기로 하였다.
어떤 $(s, e)$ ($0 \le s \le e \le N - 1$) 에 대해 $s, s+1, \dots, e$번 기지만 남기기로 했다고 하자. 이 때 유지 비용은 다음과 같이 정의된다.
여러분은 아래 함수를 구현해야 한다.
int maintenance_costs_sum(vector<int> U, vector<int> V, vector<int> W)
제출하는 소스 코드의 어느 부분에서도 입출력 함수를 실행해서는 안 된다.
번호 | 배점 | 제한 |
---|---|---|
1 | 5 | $N \le 300$ |
2 | 6 | $N \le 4\,000$ |
3 | 10 | 기지에 매겨진 번호는 $0$번 기지를 루트로 한 트리의 전위 순회 순서 (Preorder) 중 하나이다. |
4 | 26 | 각 기지에 연결된 통로가 최대 2개이다. |
5 | 53 | 추가적인 제약 조건이 없다. |
$N = 5$, $U = [0, 2, 2, 0]$, $V = [2, 1, 4, 3]$, $W = [2, 3, 6, 5]$인 경우를 생각해 보자.
그레이더는 다음 함수를 호출한다.
maintenance_costs_sum([0, 2, 2, 0], [2, 1, 4, 3], [2, 3, 6, 5])
아래 그림은 행성 X의 기지 및 통로의 배치를 나타낸다.
모든 가능한 $(i, j)$ 쌍에 대해 유지 비용을 각각 구해 보면 아래의 표와 같다.
함수는 $98$을 반환해야 한다.
Sample grader는 아래와 같은 형식으로 입력을 받는다.
Sample grader는 다음을 출력한다.
maintenance_costs_sum
이 반환한 값Sample grader는 실제 채점에서 사용하는 그레이더와 다를 수 있음에 유의하라.
Olympiad > 국제정보올림피아드 대표학생 선발고사 > 2023 > 2차 선발고사 1번
C++17, C++20, C++17 (Clang), C++20 (Clang)