문제 링크
- http://icpc.me/1799
문제 출처
- 2007 지역 본선 초등5
사용 알고리즘
- 이분 매칭
- 최대 독립 집합
풀이
체스 말 갖고 노는 문제는 격자 그래프를 의심해봐야 합니다.
격자 그래프가 나오면 이분 매칭을 의심해봐야 합니다.
위와 같은 맵이 주어진다고 합시다. 비숍이 이동할 수 있는 경로를 먼저 구해야 합니다. 오른쪽 아래로 가는 경로와 왼쪽 아래로 가는 경로, 총 두 가지만 구해주면 됩니다.
몇 가지 성질을 뽑아봅시다.
- 각 셀에서는 두 개의 경로가 만납니다.
- 같은 방향으로 진행되는 경로는 서로 겹치지 않습니다.
- 같은 경로에는 하나의 비숍만 존재해야합니다.
- 문제에서는 비숍 개수의 최대 개수를 물어보고 있습니다.
성질을 잘 활용해 문제를 재구성해봅시다.
- 각각의 경로를 정점으로 잡은 뒤, 1번 성질을 활용해 만나는 경로를 간선으로 이어줍시다.
- 2번 성질에 의해 그래프는 이분 그래프가 됩니다.
- 3번 성질을 잘 생각해보면, 이 문제는 독립 집합 문제임을 알 수 있습니다.
- 4번 조건에 의해 최대 독립 집합의 크기가 문제의 정답임을 알 수 있습니다.
이분 그래프에서의 최대 독립 집합은 최대 매칭의 개수와 동일합니다. 그러므로 이분 매칭을 돌려주면 답을 구할 수 있습니다.
중등부 문제와는 다르게 N 제한이 작아 백트래킹이 가능하다고는 하는데, 구현이 많이 귀찮기 때문에 이분 매칭으로 풀었습니다.
전체 코드
1 |
|