문제 링크입니다: https://www.acmicpc.net/problem/1043
N과 M이 최대 50이기 때문에 시간복잡도가 O(N^3)이여도 무난하게 풀 수 있는 문제였습니다.
알고리즘은 아래와 같습니다.
1. 우선 진실을 아는 사람들을 revealed 배열을 통해 표시하고
2. 각 파티에 참석한 사람들을 participatedParty 배열에 [파티][사람] 형식으로 표시해주고
3. 참석한 사람이 진실을 아는 사람이고 해당 파티가 revealedParty에 아직 표시되어 있지 않다면 revealedParty에 표시를 해주고 queue에 해당 파티 인덱스 번호를 enqueue 해줍니다.
4. 이후에는 참석한 사람들이 겹치는 파티들을 양방향으로 relatedParties 벡터를 통해 기록합니다.
5. queue에는 현재 진실을 아는 사람이 참여한 해당 파티가 있으므로 해당 큐를 이용하여 해당 파티와 연관된 파티들을 모두 표시해줍니다.
6. 마지막으로 진실을 아는 사람과 연관되지 않은 파티 즉, revealedParty 인덱스가 false인 개수를 출력해줍니다.
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 3079번 입국심사 (0) | 2020.03.08 |
---|---|
백준 10868번 최솟값 (0) | 2020.03.08 |
백준 11328번 Strfry (0) | 2020.03.02 |
백준 1267번 핸드폰 요금 (0) | 2020.03.01 |
백준 10804번 카드 역배치 (0) | 2020.03.01 |