문제 링크
- http://icpc.me/10216
문제 출처
- 2014 Coder’s High C번
사용 알고리즘
- DFS
시간복잡도
- O(n2)
풀이
어떤 두 진영의 통신영역이 서로 겹치거나 닿는 부분이 있다면, 두 진영은 직접적으로 통신할 수 있습니다. 직접적으로 통신이 가능한 지역들을 한 그룹으로 묶었을 때, 몇 개의 그룹으로 나뉘게 되는지 구하는 문제입니다.
이 문제는 연결 요소의 개수를 구하는 문제로 바꿔 풀 수 있습니다. 각 진영을 정점으로 잡고, 직접적으로 통신을 할 수 있는 진영(정점)들을 간선으로 이어준 뒤, 해당 그래프에서 DFS나 BFS를 돌려 연결 요소의 개수를 찾으면 됩니다.
전체 코드
1 |
|