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

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

최선의 트리

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

요약
트리의 차수 열이 주어질 때, 그 차수 열을 갖는 모든 트리 가운데 최대 매칭의 크기가 가장 큰 값을 구한다.
난이도

보통10점 중 7점

유형
트리, 그리디, 수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

트리의 차수열(모든 정점의 차수를 임의의 순서로 나열한 것)이 주어진다.

주어진 차수열을 가지는 모든 트리 중에서 최대 매칭이 가장 큰 트리를 찾아라.

입력

첫째 줄에 정수 tt가 주어진다 (1≤t≤100 0001 \le t \le 100\,000). 이는 테스트 케이스의 수이다.

다음 줄들에 tt개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫째 줄에 정수 nn이 주어진다 (2≤n≤200 0002 \le n \le 200\,000). 이는 정점의 수이다.

다음 줄에 nn개의 정수 d1,d2,…,dnd_1, d_2, \ldots, d_n이 주어진다 (1≤di≤n−11 \le d_i \le n - 1). 이는 트리의 차수열이다.

∑di=2(n−1)\sum d_i = 2(n - 1)이고, 주어진 차수열을 가지는 트리가 적어도 하나 존재함이 보장된다.

또한 모든 테스트 케이스에서 nn의 합은 200 000200\,000 이하이다.

출력

각 테스트 케이스마다 주어진 차수열을 가지는 모든 트리 중 최대 매칭의 최댓값을 나타내는 정수 하나를 출력한다.

힌트

첫 번째 테스트 케이스에서는 정점 10개짜리 경로를 만들 수 있다. 이 경로는 같은 차수열을 가지면서 최대 매칭이 가능한 한 크다.

두 번째 테스트 케이스에서 가능한 트리는 모든 정점이 한 정점에 연결된 스타 트리뿐이며, 이 트리의 최대 매칭은 1이다.

예제1

  1. 예제 1

    입력
    2
    10
    1 1 2 2 2 2 2 2 2 2
    5
    4 1 1 1 1
    
    예상 출력
    5
    1