나라의 심장부

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

요약
무방향 그래프에서 각 정점이 자기 자신과 집합 안의 이웃 정점들의 병력 합이 K 이상이 되도록 하는 가장 큰 정점 집합을 찾아, 그 크기와 병력 합을 출력한다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 구현, 정렬
정답자
아직 제출이 없습니다

문제

그래피아라는 나라가 전쟁에 휘말렸다. 이웃 나라들은 그래피아가 번영하는 도시들을 세우고 그 도시들을 고속도로망으로 연결하는 모습을 오랫동안 시샘하며 지켜보았고, 이제 그 몫을 차지하려 한다.

그래피아는 고속도로로 연결된 여러 도시로 이루어져 있다. 지형이 험해 도시 사이를 오갈 수 있는 방법은 고속도로뿐이다. 각 도시에는 일정 수의 병력이 주둔한다. 군 지휘부가 한 도시를 방어하려면 최소 KK명의 병력이 필요하다. 어떤 도시는 그 도시에 주둔한 병력과, 중간에 다른 도시를 거치지 않고 고속도로 하나로 직접 연결된 모든 도시의 병력으로 방어한다. 그보다 멀리 있는 병력은 제때 도착하지 못한다. 적은 한 번에 한 도시만 공격하므로, 한 도시의 병력은 그 도시 자신은 물론 인접한 도시의 방어에도 쓰일 수 있다. 만약 어떤 도시를 방어할 수 없다면, 지휘부는 그 도시의 병력이 함락되어 더 이상 그래피아 방어에 도움이 되지 못한다고 보아야 한다.

아래 예시 그림에서 K=10K = 10일 때, 도시 C는 잘 방어되는 것처럼 보이지만 결국 함락된다.

그래피아의 지도부는 나라의 심장부, 곧 다른 모든 도시가 함락되더라도 서로를 방어해 낼 수 있는 가장 큰 도시 집합을 찾고자 한다.

좀 더 형식적으로, 한 도시가 자기 자신과 인접한 도시들의 병력을 모두 합해 KK명 이상을 모을 수 있으면 그 도시는 방어 가능하다. 어떤 도시 집합이 방어 가능하다는 것은, 그 집합에 속한 모든 도시가 오직 자기 자신과 그 집합 안에 있는 인접 도시의 병력만으로 방어 가능하다는 뜻이다. 나라의 심장부는 가장 큰 방어 가능한 도시 집합이다. 즉, 그보다 더 많은 도시를 포함하는 방어 가능한 집합은 존재하지 않는다.

입력

입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합은 두 정수 NN과 KK로 시작한다. NN (3≤N≤10003 \le N \le 1000)은 도시의 수이고, KK는 한 도시를 방어하는 데 필요한 병력 수이다. 도시는 00번부터 N−1N-1번까지 번호가 매겨져 있다.

다음 NN개의 줄은 00번 도시부터 차례로 각 도시를 설명한다. 각 줄은 그 도시에 주둔한 병력 수를 나타내는 정수 TT (0≤T≤100000 \le T \le 10000)로 시작하고, 이어서 그 도시에서 나가는 고속도로의 수 MM, 그리고 그 고속도로들이 향하는 도시 번호 MM개가 온다. 한 도시의 목록 안에서 도시 번호는 모두 서로 다르며, 어떤 고속도로도 한 도시를 자기 자신과 연결하지 않는다. 고속도로는 양방향이다. 즉, 도시 ii가 도시 jj의 목록에 있으면 도시 jj도 반드시 도시 ii의 목록에 나타난다.

입력은 공백으로 구분된 두 개의 00으로 이루어진 줄로 끝난다.

출력

각 데이터 집합마다 두 정수를 한 줄에 출력한다. 첫 번째는 나라의 심장부에 속한 도시의 수이고, 두 번째는 나라의 심장부에 속한 도시들의 병력 총합이다. 두 정수 사이에는 공백 하나를 둔다. 출력들 사이에 빈 줄을 넣지 않는다.

예제1

  1. 예제 1

    입력
    4 900
    100 2 1 2
    200 2 0 3
    500 2 0 3
    1000 2 1 2
    4 900
    100 3 1 2 3
    200 3 0 3 2
    500 3 1 3 0
    1000 3 2 1 0
    0 0
    
    예상 출력
    3 1700
    4 1800