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

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

지름이 가장 긴 트리 만들기

면접 대비

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

요약
루트에서 각 거리에 놓인 정점 수가 주어질 때, 이 수를 만족하면서 지름이 최대가 되는 트리를 구성하고 그 지름을 구한다.
난이도

보통10점 중 5점

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

문제

트리는 사이클이 없는 연결 그래프다. 정점이 NN개인 트리는 간선이 N−1N-1개다.

두 정점 사이의 거리는 한 정점에서 다른 정점으로 갈 때 지나는 간선 개수의 최솟값이다. 트리의 지름은 모든 정점 쌍의 거리 중에서 가장 큰 값이다.

아래 조건을 만족하는 트리 중에서 지름이 가장 긴 것을 만들어 보자.

  • 트리의 루트를 VV라고 하자.
  • VV에서 가장 먼 정점까지의 거리를 DD라고 하자.
  • 1≤i≤D1 \le i \le D인 모든 ii에 대해, VV와의 거리가 정확히 ii인 정점의 개수는 cnt[i]cnt[i]다.

cntcnt 배열이 주어지면 조건을 만족하는 트리의 지름 중 최댓값을 출력한다.

입력

첫째 줄에 cntcnt 배열의 크기 NN (1≤N≤501 \le N \le 50)이 주어진다.

둘째 줄에 cnt[1]cnt[1]부터 cnt[N]cnt[N]까지 NN개의 값이 차례대로 주어진다. (1≤cnt[i]≤10001 \le cnt[i] \le 1000)

출력

조건을 만족하는 트리 중에서 지름이 가장 큰 것의 지름을 첫째 줄에 출력한다.

예제5

  1. 예제 1

    입력
    1
    3
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2
    2 2
    
    예상 출력
    4
    
  3. 예제 3

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

    입력
    2
    1 1
    
    예상 출력
    2
    
  5. 예제 5

    입력
    3
    1 1000 1
    
    예상 출력
    3