[1. 문제 설명]
https://www.acmicpc.net/problem/1043
[2. 풀이 접근]
최초에는 모든 파티에 참가할 수 있다고 할 수 있다.
이 후, 어떤 파티에 진실을 아는 사람이 있는 경우 이 파티를 참가하지 않도록 한다.
또, 어떤 파티에 진실을 아는 사람이 없는 경우 이 파티에는 무조건 참가가 가능하지는 않다.
이 파티에 참가한 사람이 진실을 모르더라도,
다른 파티에 참석하여 진실을 아는 사람과 만나는 경우에는 결국 진실을 알게 될 것이기 때문이다.
따라서 모든 파티에 참가자가 서로 만날 것인가에 대한 여부를 먼저 처리해야 한다.
전처리를 먼저하고 나서 파티 참석 여부를 따져야 한다는 것이다.
전처리는 아래와 같이 진행한다.
- 진실을 아는 사람들을 하나의 집합에 속하게 한다.
- 각 파티에 속한 사람들을 하나의 집합에 속하게 한다.
전처리 후 각 파티에 참여한 사람들이 진실을 아는 사람 집합에 속하게 되는 경우
그 파티는 참여하지 않도록 결과를 만들면 된다.
[3. 코드]
'알고리즘 > Baekjoon' 카테고리의 다른 글
분할 정복. [24060] (0) | 2022.12.23 |
---|---|
최단 경로. [1238] (0) | 2022.12.23 |
이분탐색. [1939] (0) | 2022.12.22 |
구간 트리. [10868] (0) | 2022.12.22 |
우선 순위 큐. [1715] (0) | 2022.12.22 |