[BOJ 12909] 그래프 만들기

View as PDF

Submit solution

Points: 3
Time limit: 2.0s
Memory limit: 512M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

N개의 노드와 N-1개의 간선으로 이루어져 있는 그래프를 만들려고 한다. 이 그래프는 연결되어 있어야 한다.</p>

예를 들어, 아래 그림은 N=5개의 노드와 N-1=4개의 간선으로 이루어져 있는 그래프이다.

간선은 두 노드를 연결할 수 있다. 노드의 차수는 노드와 연결되어 있는 간선의 개수이다. 위의 그림에서 A의 차수는 3이고, B의 차수는 1이다.

N이 주어졌을 때, 적절히 그래프를 만들어서 그래프의 점수를 최대로 만들려고 한다. 그래프의 점수는 각 노드의 점수를 더해서 구할 수 있으며, 각 노드의 점수는 차수에 의해서 결정된다.

입력으로, 차수에 대한 점수가 주어졌을 때, 만들 수 있는 그래프의 점수의 최댓값을 구하는 프로그램을 작성하시오. 

입력 형식

첫째 줄에 그래프의 정점의 개수 N이 주어진다. (1 ≤ N ≤ 51)</p>

둘째 줄에는 각 차수의 점수가 주어진다. (0 ≤ 점수 ≤ 10,000)

점수는 차수 1인 노드의 점수, 차수 2인 노드의 점수, ..., 차수 N-1인 노드의 점수 순서대로 주어진다.

출력 형식

첫째 줄에 만들 수 있는 그래프 중에서 점수가 최대가 되는 것의 점수를 출력한다.

예제 입력 1

4
1 3 0

예제 출력 1

8

예제 입력 2

5
0 0 0 10

예제 출력 2

10

예제 입력 3

7
1 2 3 4 5 6

예제 출력 3

12

예제 입력 4

4
5 0 0

예제 출력 4

15

예제 입력 5

8
1 3 2 5 3 7 5

예제 출력 5

20

힌트

예제 1의 경우에 차수가 1인 노드의 점수는 1, 2인 노드의 점수는 3, 3인 노드의 점수는 0이다.</p>

아래 그림과 같은 그래프를 만들면 그래프의 점수가 최대가 된다.

그래프의 차수를 계산해보면 1, 2, 2, 1이다. 따라서, 합은 1+3+3+1 = 8이 된다.

예제 2의 경우에 가능한 정답은 아래 그림과 같다.


Comments

There are no comments at the moment.