파일 업로드

🎨AI 리소스 생성

프롬프트 없음

비료 주기

profile
실행 시간 제한메모리 제한
2 초1024 MB
📃 해결할 문제

NN개의 목장이 있으며 (2N21052 \le N \le 2 \cdot 10^5), 이 목장들은 N1N-1개의 도로가 서로 연결되어 하나의 트리를 형성합니다. 모든 도로를 통과하는데 1초가 걸립니다. 각 목장은 0 개의 잔디를 가지고 있으며, ii번 목장의 잔디는 aia_i (1ai1081 \le a_i \le 10^8) 단위/초로 성장합니다. 

현우는 처음에 1번 목장에 위치해 있고, 모든 목장을 돌아다니며 잔디에 비료를 주어야 합니다. xx 단위의 잔디가 있는 목장을 방문하려면, xx 만큼의 비료가 필요합니다. 목장은 처음 방문 시에만 비료를 필요로 하며, 비료를 주는 데는 시간이 걸리지 않습니다.

입력은 추가로 T{0,1}T \in \{0,1 \}를 포함합니다.

  • T=0T=0 인 경우, 현우는 1번 목장에서 끝내야합니다.
  • T=1T=1 인 경우, 현우는 어떤 목장에서든 끝낼 수 있습니다.

모든 목장을 비료로 가꾸는 데 걸리는 최소 시간과 그 시간 동안 필요한 최소 비료량을 계산하십시오.

💻 입력

첫 번째 줄에는 NNTT가 있습니다.

그런 다음 ii에서 22에서 NN까지 각 줄에는 pip_iaia_i가 있으며, 이는 목장 pip_iii를 연결하는 도로가 있다는 것을 의미합니다. 1pi\lti1 \le p_i\lti이 보장됩니다.

🖨️ 출력

최소 시간과 최소 비료량을 공백으로 구분하여 출력하십시오.


💻 예제 입력 1
5 0
1 1
1 2
3 1
3 4
🖨️ 예제 출력 1
8 21
💻 예제 입력 2
5 1
1 1
1 2
3 1
3 4
🖨️ 예제 출력 2
6 29

💡 힌트

입력 예사:

5 1
1 1
1 2
3 1
3 4

출력 예사:

6 29

현우의 최적 경로는 다음과 같습니다:

  • 시간 11에서, 노드 33으로 이동하면, 그곳에는 이제 12=21 \cdot 2 = 2 풀이 있으므로 22 비료가 필요하다.
  • 시간 22에서, 노드 55로 이동하면, 그곳에는 이제 24=82 \cdot 4 = 8 풀이 있으므로 88 비료가 필요하다.
  • 시간 33에서, 다시 노드 33으로 이동하면, 이미 비료를 줬기 때문에 다시 비료를 줄 필요가 없다.
  • 시간 44에서, 노드 44로 이동하면, 그곳에는 이제 41=44 \cdot 1 = 4 풀이 있으므로 44 비료가 필요하다.
  • 시간 55에서, 다시 노드 33으로 이동하면, 이미 비료를 줬기 때문에 다시 비료를 줄 필요가 없다.
  • 시간 66에서, 다시 노드 11로 이동하다.
  • 시간 77에서, 노드 22로 이동하면, 그곳에는 이제 71=77 \cdot 1 = 7 풀이 있으므로 77 비료가 필요하다.
  • 시간 88에서, 다시 노드 11로 돌아온다.

이 경로는 88의 시간이 걸리며 2+8+4+7=212 + 8 + 4 + 7 = 21의 비료를 사용합니다. 노드 11로 돌아가는 어떤 경로의 경우 88은 최소한의 시간이며 212188의 시간이 걸리는 어떤 경로의 경우 최소한의 비료 사용량입니다.

 

점수:

  • 입력 3-10: T=0T=0
  • 입력 11-22: T=1T=1
  • 입력 3-6와 11-14: 목장 하나가 세 개 이상의 도로와 인접해있지 않다.

출처: USACO 2023 February Contest, Gold Problem 2. Fertilizing Pastures