Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Feb 21, 2025

🧷 문제 링크

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

🧭 풀이 시간

25분

👀 체감 난이도

✏️ 문제 설명

  • $N$대의 컴퓨터가 $M$개의 LAN선으로 연결되어 있고, 각 LAN선은 데이터 전송 속도(가중치)를 가진다.
  • 두 컴퓨터 $a, b$간의 데이터 전송 속도는, $a, b$ 경로의 LAN선 데이터 전송 속도의 최솟값이고, 경로를 잘 정해서 이 값을 최대로 해보자. (총 Q번 해야함)

🔍 풀이 방법

[사용한 알고리즘]

  • 최소 스패닝 트리
  • 희소 배열
  • 최소 공통 조상

  • "경로를 잘 정해서" 라는 말은 곧, 크루스칼 알고리즘으로 최대 가중치 간선부터 넣었을 때 만들어지는 최소 스패닝 트리에서의 이동을 의미한다.
  • 최소 스패닝 트리가 만들어지면, 두 컴퓨터 $a, b$ 사이의 경로는 유일해진다. (트리이기 때문)
  • 만들어진 최소 스패닝 트리에서 질문을 효율적으로 처리하기 위해, 희소 배열로 $n$$2^k$번째 부모를 D[n][k]에 저장한다.
  • 그리고, 그 경로 상에서 지나는 가중치들 중 최소 가중치를 X[n][k]에 저장한다.
  • $D[n][k] = D[D[n][k-1]][k-1], X[n][k] = \min(X[D[n][k-1]][k-1], X[n][k-1])$이 성립한다.
  • 질문이 들어올 때마다, 두 컴퓨터를 최소 공통 조상까지 끌어올리며, 지나는 가중치들 중 최솟값을 구하자.

⏳ 회고

  • 최소 스패닝 트리를 떠올리는데 좀 힘들었는데, 눈치 채면 그 다음은 순조로움

@ShinHeeEul ShinHeeEul merged commit 555436f into main Feb 21, 2025
1 check passed
@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Feb 21, 2025
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