Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Gradle
- Coroutines
- Coroutine
- 암호학
- activity
- pandas
- 쿠링
- livedata
- TEST
- AWS
- Rxjava
- android
- 백준
- 프로그래머스
- MyVoca
- relay
- boj
- Python
- textfield
- Hilt
- Compose
- architecture
- 코루틴
- 코드포스
- Codeforces
- androidStudio
- Kotlin
- GitHub
- ProGuard
- MiTweet
Archives
- Today
- Total
이동식 저장소
2610. 회의준비 본문
오랜만에 문제 풀이를 쓴다. 요즘 바빠서;;
2610번: 회의준비
첫째 중에 회의에 참석하는 사람의 수 N이 주어진다. 참석자들은 1부터 N까지의 자연수로 표현되며 회의에 참석하는 인원은 100 이하이다. 둘째 줄에는 서로 알고 있는 관계의 수 M이 주어진다. 이
www.acmicpc.net
위원회 구성
우선 위원회를 구성해야 한다. 서로 알고 있는 사람은 반드시 같은 위원회에 속해야 하므로, Union-Find를 이용하여 위원회를 구성할 수 있다. 서로 알고 있는 사람끼리 ``merge``한 다음, 각 참석자 ``i``를 ``root(i)`` 쪽으로 모은다.
대표 결정하기
대표를 결정하려면 우선 두 사람 사이의 의사전달시간을 알아야 한다. 매번 BFS 등으로 탐색하면 매우 비효율적이므로, 플로이드-와샬 알고리즘을 사용하여 임의의 두 사람 사이의 의사전달시간을 미리 계산해 두자.
그 후에는 의사전달시간의 최댓값이 최소가 되도록 하는 대표를 찾으면 된다. 간단하죠?
주의! 의사전달시간의 합이 최소가 되도록 하면 안 된다.

깔끔.
'Problem Solving > BOJ' 카테고리의 다른 글
| 3020. 개똥벌레 (0) | 2020.12.14 |
|---|---|
| 3000. 직각삼각형 (0) | 2020.11.20 |
| 10253. 헨리 (1) | 2020.10.22 |
| 1328. 고층 빌딩 (0) | 2020.10.16 |
| 1562. 계단 수 (0) | 2020.10.13 |
Comments
