Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Nov 3, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/15491

🧭 풀이 시간

40분

👀 체감 난이도

✏️ 문제 설명

N개의 도시가 트리 형태로 구성되어 있다.
각 도시들은 정비가 필요하고, 정비에는 정비 기기가 필요하다.
어떤 도시에 필요한 정비 기기의 최소 가격이 x면, 가격이 x 이상인 정비 기기를 사용해야 그 도시를 정비할 수 있다.

어떤 도시를 하나 골라서 그 도시를 없애고 그와 직접 연결된 간선도 제거할 때, 모든 도시를 정비하는 최소 비용 중 최댓값을 구해보자.

🔍 풀이 방법

도시를 없앴을 때 나뉘어지는 각 컴포넌트 S1, S2, ...에 대하여,

max(S1) + max(S2) + ... 를 최대화

inmx[n] = n의 서브트리 내의 최댓값
outmx[n] = n의 서브트리 외의 최댓값
ex[n] = p의 자식들 들 중 n을 제외한 c1, c2, ...에 대하여, max(inmx[c1], inmx[c2], ...)

-> outmx[n] = max(outmx[p], a[p], ex[n])

n의 서브트리 중 n을 제외한 최댓값은 n의 자식들의 inmx 최댓값임.
그래서 n의 자식들 i에 대해, inmx[i]들의 최댓값을 mx1, 두 번째 최댓값을 mx2라고 했을 때
inmx[i] = mx1이면 ex[i] = mx2이고 아니면 ex[i] = mx1

⏳ 회고

ez

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Nov 3, 2025
@ShinHeeEul ShinHeeEul merged commit be75cd0 into main Nov 3, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants