KOI 2차 2021 고4- 맛집 추천 > 문제은행 : 정보올림피아드&알고리즘


4808 : 맛집 추천

제한시간
3000 ms   
메모리제한
1024 MB   
해결횟수
2 회   
시도횟수
2 회   

문제

맛집 추천

  KOI나라에는 N개의 도시가 있다. 각 도시에는 1번부터 N번까지의 번호가 붙어 있다.

 

  KOI나라는 구조가 특이해서, 도시를 정점으로 표현하고 길을 양방향 간선으로 표현하면 N개의 정점을

가진 트리가 된다. 트리는 사이클이 없는 연결 그래프이다.

 

  KOI나라에는 총 M개의 맛집이 있으며, 각 맛집에는 1번부터 M번까지0의 번호가 붙어 있다. 

맛집이 아예 없는 도시가 있을 수도 있고, 맛집이 두 개 이상 있는 도시가 있을 수180도 있음에 유의하라.

 

  i (1 ≤ i ≤ M)번 맛집은 ci번 도시에 있으며, 배달 가능 거리는 di이고, 고객 선호도는 gi이다.

i번 맛집은 ci번 도시에서부터 di개 이하의 길을 거쳐 갈 수 있는 도시들에만 배달을 할 수 있다. 

 

   즉, i번 맛집이 배달할 수 있는 도시들의 집합을 Ri라고 하면, Ri = {j | d(ci, j) ≤ di}이다. 

 

  여기서 d(a, b)는 a번 도시와 b번 도시의 최단 경로의 길이(두 도시 사이를 이동하기 위해 거쳐야 하는 최소 길의 수)이다.

당신은 배달 앱의 운영자이다. 배달 앱은 맛집들을 추천하는데 서비스의 중복을 피하기 위해서 M개의

맛집 중 다음 조건을 만족하는 맛집들의 집합 S를 고르려고 한다.

 

• 임의의 도시 p에 대해서, p는 S에 속하는 두 개 이상의 맛집의 배달 가능한 집합에 동시에 속하지

  않는다. 즉, S에 속한 임의의 서로 다른 두 맛집 i와 j에 대해서, Ri ∩ Rj는 공집합이어야 한다.

 

  위 조건을 만족하는 맛집들의 집합 S 중에서, S에 속한 맛집들의 선호도의 합이 최대인 집합을 찾아, 

때 선호도의 합을 출력하는 프로그램을 작성하라.

 

제약 조건

• 주어지는 모든 수는 정수이다.

• 1 ≤ N ≤ 105

• 1 ≤ M ≤ 105

• 모든 i (1 ≤ i ≤ M)에 대해: 0 ≤ di ≤ N − 1, 1 ≤ gi ≤ 109

 

부분문제

1. (9점) 1 ≤ i ≤ N − 1 에 대해서, i번 정점과 i + 1번 정점이 간선으로 연결되어 있다.

2. (11점) N, M ≤ 20.

3. (17점) N, M ≤ 2 000.

4. (10점) N ≤ 2 000.

5. (8점) 2 ≤ i ≤ N에 대해, ⌊i / 2⌋번 정점과 i번 정점이 간선으로 연결되어 있다.

6. (12점) 차수가 3 이상인 정점은 많아야 하나뿐이다.

7. (33점) 추가 제약 조건이 없다.


입력형식

첫 번째 줄에 두 개의 정수 N과 M이 공백 하나를 사이로 두고 주어진다.

 

다음 N − 1개의 줄에는 KOI 나라의 길이 잇는 

두 도시의 번호를 나타내는 정수 a와 b가 공백 하나를 사이로 두고 주어진다.

 

다음 M개의 줄에는 맛집에 대한 정보가 주어진다. 

이 중 i (1 ≤ i ≤ M)번째 줄에는 세 개의 정수 ci, di, gi가 공백 하나를 사이로 두고 주어진다. 


출력형식

첫 번째 줄에 문제의 조건을 만족하는 맛집의 집합 중 선호도의 합을 최대화하도록 

집합을 골랐을 때의 선호도의 합을 출력한다.

 


입력 예

8 5
1 2
2 3
3 4
4 5
5 6
4 7
4 8
3 2 40
6 0 5
8 0 5
2 1 16
5 1 32

출력 예

53


경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호

TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com

Copyrightⓒ 2010 jungol. All right reserved.

TOP