Visits


답안 제출

Points: 14
시간 제한: 2.0s
메모리 제한: 1G

문제 유형

베시의 소 친구 \(N\)마리는 각각 자신의 농장을 가지고 있다. 소 친구들은 편의상 \(1\)번부터 \(N\)번까지 번호가 붙어 있다. 각 \(1\le i\le N\)에 대해, \(i\)번 친구는 \(a_i\)번 친구를 방문하고 싶어 한다. (\(a_i\ne i\))

\(1,2,\ldots,N\)의 순열 \((p_1,p_2,\ldots,p_N)\)이 주어졌다고 하자. 방문은 다음과 같이 이루어진다.

\(i=1\)부터 \(N\)까지 차례대로 다음 과정을 수행한다.

  • \(a_{p_i}\)번 친구가 이미 자신의 농장을 떠났다면, \(p_i\)번 친구는 자신의 농장에 남는다.
  • 그렇지 않다면, \(p_i\)번 친구는 자신의 농장을 떠나 \(a_{p_i}\)번 친구의 농장을 방문한다. 이 방문으로 즐거운 음매 소리가 \(v_{p_i}\)번 울린다.

가능한 모든 순열 \(p\) 중에서, 모든 방문이 끝난 뒤 울린 음매 소리 횟수의 최댓값을 구하여라.

입력

첫째 줄에 소 친구의 수 \(N\)이 주어진다. (\(2\le N\le 10^5\))

다음 \(N\)개의 줄 중 \(i\)번째 줄에는 두 정수 \(a_i\)와 \(v_i\)가 공백으로 구분되어 주어진다. (\(a_i\ne i\), \(0\le v_i\le 10^9\))

출력

가능한 음매 소리 횟수의 최댓값을 출력한다.

답의 크기가 클 수 있으므로 C/C++에서는 long long과 같은 64비트 정수 자료형을 사용해야 할 수 있다.

예제 입력

4
2 10
3 20
4 30
1 40

예제 출력

90

만약 \(p=(1,4,3,2)\)라면 다음과 같이 방문한다.

  • \(1\)번 친구가 \(2\)번 친구의 농장을 방문하여 음매 소리가 \(10\)번 울린다.
  • \(4\)번 친구는 \(1\)번 친구가 이미 떠난 것을 보고 아무 일도 하지 않는다.
  • \(3\)번 친구가 \(4\)번 친구의 농장을 방문하여 음매 소리가 \(30\)번 더 울린다.
  • \(2\)번 친구는 \(3\)번 친구가 이미 떠난 것을 보고 아무 일도 하지 않는다.

따라서 음매 소리는 총 \(10+30=40\)번 울린다.

반면 \(p=(2,3,4,1)\)이라면 \(2\)번, \(3\)번, \(4\)번 친구가 차례로 방문하여 각각 \(20\), \(30\), \(40\)번의 음매 소리를 낸다. 마지막으로 \(1\)번 친구는 \(2\)번 친구가 이미 떠난 것을 보고 아무 일도 하지 않는다. 따라서 음매 소리는 총 \(20+30+40=90\)번 울리며, 이것이 가능한 최댓값이다.

서브태스크

테스트 케이스 추가 제한
2–3 모든 \(i\ne j\)에 대해 \(a_i\ne a_j\)이다.
4–7 \(N\le 10^3\)
8–11 추가 제한 없음

출처

USACO 2022 US Open Contest, Silver, Problem 1. Visits


코멘트

현재 작성된 코멘트가 없습니다.