문제 링크
- http://icpc.me/1587
사용 알고리즘
- DP
-
General Matching
시간복잡도
- $O(\vert V \vert)$
풀이
$D(i, j) := $ 왼쪽 $1\cdots i$번 정점, 오른쪽 $1\cdots j$번 정점만 고려했을 때의 최대 매칭이라고 정의합시다. 상태 전이는 쉽게 구할 수 있습니다.
- $i-1, i$ 매칭 : $D(i, j) \leftarrow D(i-2, j) + 1$
- $j-1, j$ 매칭 : $D(i, j) \leftarrow D(i, j-2) + 1$
- $i-1, i, j-1, j$ 매칭 : $D(i, j) \leftarrow D(i-2, j-2) + 2$
- $i, j$ 매칭 : $D(i, j) \leftarrow D(i-1, j-1) + 1$
혹은 그래프의 크기가 작다는 점을 이용해 Blossom Algorithm을 이용해서 General Matching을 구해도 됩니다.
전체 코드
1 |
|