강하게 매칭 가능한 그래프

짝수 개의 정점을 가진 그래프가 모든 균형 이분할에 대해 완전 이분 매칭을 가지는지 판별한다.

어려움9그래프수학조합론동적 계획법아직 제출이 없습니다시간 제한3초메모리 제한512 MB

문제

GG는 정점이 nn개인 단순 무향 그래프이고, 정점 집합과 간선 집합을 각각 V(G)V(G), E(G)E(G)로 쓴다. 두 간선이 정점 하나를 공유하면 두 간선은 인접하다고 한다. 두 정점이 간선 하나를 공유하면 두 정점은 인접하다고 하고, 그 간선은 두 정점을 잇는다. 간선과 그 간선의 끝점은 서로 결합한다고 한다. E(G)E(G)의 부분집합 MM에서 어떤 두 간선도 인접하지 않으면 MMGG의 매칭이라 한다. GG의 모든 정점이 MM의 간선 정확히 하나와 결합하면 MM을 완전 매칭이라 한다. 곧 매칭 MM이 완전 매칭인 것과 M=n/2|M| = n/2인 것은 같은 말이다.

간선이 가장 많은 매칭을 찾는 다항 시간 알고리즘이 있으므로 GG에 완전 매칭이 있는지는 다항 시간에 판정한다. 완전 매칭의 존재를 두고 다음 두 질문도 던질 수 있다.

  • S=T=n/2|S| = |T| = n/2V(G)V(G)의 분할 SS, TT 하나가 주어졌을 때, 모든 간선이 SS의 정점과 TT의 정점을 잇는 완전 매칭이 GG에 있는가?
  • S=T=n/2|S| = |T| = n/2V(G)V(G)의 모든 분할 SS, TT에 대해, 모든 간선이 SS의 정점과 TT의 정점을 잇는 완전 매칭이 GG에 있는가?

첫 번째 질문의 답을 특징짓는 조건은 홀의 결혼 정리에서 끌어낼 수 있다. 양 끝점이 모두 SS에 있거나 모두 TT에 있는 간선을 지운 GG의 신장 부분그래프를 GG'라 하자. 곧 V(G)=V(G)V(G') = V(G)이고, E(G)E(G')는 한 끝점이 SS에 있고 다른 끝점이 TT에 있는 E(G)E(G)의 간선을 모두 모은 집합이다. 그러면 SSTT를 잇는 완전 매칭이 GG에 있는 것과 GG'에 완전 매칭이 있는 것은 같은 말이다. 또 홀의 정리에서, GG'에 완전 매칭이 있는 것은 SS의 모든 부분집합 XX에 대해 N(X)X|N(X)| \ge |X|가 성립하는 것과 같다. 여기서 N(X)N(X)XX의 어떤 정점과 인접한 TT의 정점을 모두 모은 XX의 이웃 집합이다. 최대 매칭 알고리즘이 다항 시간에 끝나므로 이 질문에도 다항 시간에 답한다.

두 번째 질문에는 효율적인 알고리즘이 있을까? 두 번째 질문의 답이 참인 그래프를 강하게 매칭 가능하다고 한다. 곧 S=T=n/2|S| = |T| = n/2V(G)V(G)의 모든 분할 SS, TT에 대해 각 간선이 SS의 정점 하나와 TT의 정점 하나를 잇는 완전 매칭이 GG에 있으면 GG는 강하게 매칭 가능하다. 예를 들어 그림 1의 (a)는 강하게 매칭 가능하다. 대칭인 경우를 빼면 분할이 세 가지뿐이고 셋 다 완전 매칭이 있다. S={1,2,3}S = \{1, 2, 3\}, T={4,5,6}T = \{4, 5, 6\}에는 M={(1,4),(2,5),(3,6)}M = \{(1,4), (2,5), (3,6)\}, S={1,2,4}S = \{1, 2, 4\}, T={3,5,6}T = \{3, 5, 6\}에는 M={(1,3),(2,5),(4,6)}M = \{(1,3), (2,5), (4,6)\}, S={1,2,6}S = \{1, 2, 6\}, T={3,4,5}T = \{3, 4, 5\}에는 M={(1,3),(2,5),(6,4)}M = \{(1,3), (2,5), (6,4)\}가 있다. 그러나 (b)는 S={1,2,4}S = \{1, 2, 4\}T={3,5,6}T = \{3, 5, 6\} 사이에 완전 매칭이 없으므로 강하게 매칭 가능하지 않다. 정점 수가 짝수인 그래프가 주어질 때 그 그래프가 강하게 매칭 가능한지 판정하는 프로그램을 작성하라.

(a)(b)

그림 1: (a)는 강하게 매칭 가능하고, (b)는 그렇지 않다.

입력

첫 줄에 정점 수 nn과 간선 수 mm이 주어진다. nn은 짝수이고 2n1002 \le n \le 100이며, 1mn(n1)/21 \le m \le n(n-1)/2이다. 다음 mm개 줄에는 간선이 하나씩 주어지고, 각 줄에는 그 간선이 잇는 두 정점 uuvv가 주어진다. 정점 번호는 11부터 nn까지이다. 입력 그래프는 단순 그래프여서 자기 자신을 잇는 간선이 없고 같은 간선이 두 번 주어지지 않는다.

출력

입력 그래프가 강하게 매칭 가능하면 11을, 그렇지 않으면 1-1을 한 줄에 출력한다. 출력은 정수 하나뿐이다.