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

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

소셜 네트워크 백신 접종

시간 제한2초메모리 제한128 MB

요약
정점이 최대 30개, 백신이 최대 6개인 그래프에서 D명을 접종해 남는 최대 연결 성분의 크기를 최소로 만드는 문제다.
난이도

보통10점 중 7점

유형
그래프, 완전 탐색, DFS, 조합론
정답자
아직 제출이 없습니다

문제

보건 정책 결정은 흥미로운 계산 문제로 이어지곤 하며, 그중 하나가 백신 접종이다. 접종 여부를 각 개인에게 맡기는 방식은 접종한 사람만 이익을 본다고 가정한다. 하지만 실제로는 그렇지 않다. 접종한 사람은 병에 걸리지도, 남에게 옮기지도 않으므로 주변 사람들까지 크게 보호한다. 따라서 사회 전체를 잘 보호하려면 누구에게 접종할지를 신중하게 고르는 것이 이상적이다.

이를 다음과 같이 단순하게 모형화한다. 개인과 그들의 친구 관계로 이루어진 소셜 네트워크(그래프)가 주어진다. 누군가 병에 걸리면 그 사람은 접종하지 않은 모든 친구에게 병을 옮기고, 그 친구들도 같은 방식으로 병을 퍼뜨린다. 접종한 사람은 절대 병에 걸리지 않는다. 우리에게는 백신 DD개가 있어 DD명에게 접종할 수 있다. 접종을 마친 뒤, 최악의 경우를 가정하여 병이 어느 한 사람에게서 발생한다고 하자. 이 발병 지점은 결국 병에 걸리는 사람 수가 최대가 되도록 정해진다. 우리의 목표는, 이 최악의 가정 아래 결국 병에 걸리는 사람 수가 가능한 한 작아지도록 접종할 DD명을 고르는 것이다. 그 최솟값을 구하라.

입력

첫 줄에 데이터 집합의 개수 KK가 주어진다. 이어서 KK개의 데이터 집합이 다음 형식으로 주어진다.

각 데이터 집합의 첫 줄에는 두 정수 nn, DD가 주어진다. 1≤n≤301 \le n \le 30은 네트워크에 있는 사람 수이고, 0≤D≤60 \le D \le 6은 가지고 있는 백신 개수이다. 사람에게는 11번부터 nn번까지 번호가 매겨져 있다.

그다음 nn개의 줄이 주어지며, ii번째 줄에는 ii번 사람의 모든 친구가 공백으로 구분되어 나열된다. 친구 관계는 반사적이고 대칭적이다. 즉, 모든 사람은 최소한 자기 자신을 친구로 가지며, ii가 jj의 친구이면 jj도 ii의 친구이다.

출력

각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. 여기서 xx는 데이터 집합의 번호이며 11부터 시작한다. 그다음 줄에는 접종 대상을 최적으로 골랐을 때 최악의 경우에 병에 걸리는 사람 수를 출력한다. 연속한 두 데이터 집합 사이에는 빈 줄을 하나 넣는다.

예제4

  1. 예제 1

    입력
    1
    11 2
    1 2 3 4
    1 4 2 3
    1 2 3 4 6 5 7
    7 1 2 6 5 3 4
    3 4 5 6 7 8 9
    3 4 5 6 7 8 9
    3 4 5 6 7 8 9
    5 6 7 8 9 10 11
    6 5 11 10 9 8 7
    8 9 10 11
    9 8 11 10
    
    예상 출력
    Data Set 1:
    7
    
  2. 예제 2

    입력
    1
    1 0
    1
    
    예상 출력
    Data Set 1:
    1
    
  3. 예제 3

    입력
    1
    3 6
    1 2 3
    2 1 3
    3 1 2
    
    예상 출력
    Data Set 1:
    0
    
  4. 예제 4

    입력
    1
    5 0
    1 2
    1 2
    3 4 5
    3 4 5
    3 4 5
    
    예상 출력
    Data Set 1:
    3