아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

우정 그래프

시간 제한1초메모리 제한1024 MB

요약
그래프의 정점을 두 개의 클리크로 나누되 두 클리크의 크기 차이가 최소가 되도록 하고, 불가능하면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
그래프, 동적 계획법, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

사람들이 서로 교류하는 집합이 주어졌을 때, 사람을 정점으로 하고 두 사람이 서로 친구일 때에만 간선이 있는 그래프를 생각할 수 있다. 이런 그래프를 소셜 네트워크라고 부르며, 대학의 학생들이나 작은 마을의 주민들과 같은 임의의 사람 집합에 대해 정의할 수 있다. 소셜 네트워크를 분석하는 학문이 최근 몇 년 사이에 등장했는데, 사람과 그들의 행동에서 흥미로운 여러 측면이 이 우정 그래프의 성질로 가장 잘 이해되기 때문이다.

Problem Solving 수업의 학생들을 정점으로 하는 우정 그래프가 주어졌을 때, 학생들을 두 그룹 AA와 BB로 나누어 다음 세 조건을 동시에 만족시키는 프로그램을 작성하시오.

  • 수업의 각 학생은 정확히 하나의 그룹 AA 또는 BB에 속한다.
  • 각 그룹의 임의의 두 학생은 서로 친구이다.
  • 그룹 AA와 BB의 크기 차이 ∣∣A∣−∣B∣∣||A| - |B||가 가능한 한 작다.

예를 들어 아래 그림과 같은 우정 그래프가 주어졌다고 하자. 학생들을 A={u_1,u_2,u_3,u_6}A = \{u\_1, u\_2, u\_3, u\_6\}과 B={u_4,u_5,u_7}B = \{u\_4, u\_5, u\_7\}로 나누는 것은 u_2u\_2와 u_6u\_6이 친구가 아니므로 불가능하다. 한편 A={u_1,u_2}A = \{u\_1, u\_2\}와 B={u_3,u_4,u_5,u_6,u_7}B = \{u\_3, u\_4, u\_5, u\_6, u\_7\}로 나누면 각 그룹의 임의의 두 학생은 서로 친구이지만, 두 그룹의 크기 차이(∣2−5∣=3|2 - 5| = 3)는 A={u_1,u_2,u_3}A = \{u\_1, u\_2, u\_3\}과 B={u_4,u_5,u_6,u_7}B = \{u\_4, u\_5, u\_6, u\_7\}로 나누었을 때의 차이(∣3−4∣=1|3 - 4| = 1)보다 크다. 마지막 분할이 우리가 원하는 최적의 분할이다.

입력

프로그램은 표준 입력에서 데이터를 읽는다. 첫째 줄에는 우정 그래프의 정점 수와 간선 수를 나타내는 두 정수 nn과 mm이 주어지며, 2≤n≤1,0002 ≤ n ≤ 1,000이고 0≤m≤(n2)0 ≤ m ≤ \binom{n}{2}이다. 정점에는 11부터 nn까지 번호가 매겨진다. 다음 mm개 줄에는 각각 그래프의 간선 (u,v)(u, v)를 나타내는 두 정수 uu와 vv가 주어진다.

출력

프로그램은 표준 출력에 결과를 쓴다. 정수 하나를 포함하는 줄을 정확히 하나 출력한다. 이 정수는 학생들을 위 세 조건을 만족하도록 두 그룹으로 나눌 수 있을 때 두 그룹의 크기 차이의 최솟값이고, 그렇지 않으면 -1이다.

예제3

  1. 예제 1

    입력
    7 13
    1 2
    2 3
    3 1
    3 4
    3 5
    3 6
    3 7
    4 5
    5 7
    7 6
    6 4
    4 7
    5 6
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5 5
    1 2
    2 3
    3 4
    4 5
    5 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    4 4
    4 3
    3 2
    2 1
    1 4
    
    예상 출력
    0