포럼
문제 USACO0522

방문

설명

베시(Bessie)의 \(N\)마리 (\(2\le N\le 10^5\)) 소 친구들(편의상 \(1\ldots N\)으로 번호가 붙어 있다)은 각자 자기 농장을 가지고 있다. 각 \(1\le i\le N\)에 대해, 친구 \(i\)는 친구 \(a_i\) (\(a_i\neq i\))를 방문하고 싶어 한다.

\(1\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}\)번 (\(0\le v_{p_i}\le 10^9\)) 울려 퍼진다.

가능한 모든 순열 \(p\)에 대해, 모든 방문이 끝난 후 울린 음머 소리 횟수의 최댓값을 계산하시오.

문제 제공: Benjamin Qi and Michael Cao

제약

배점

  • 테스트 케이스 2-3은 모든 \(i\neq j\)에 대해 \(a_i\neq a_j\)를 만족한다.
  • 테스트 케이스 4-7은 \(N\le 10^3\)을 만족한다.
  • 테스트 케이스 8-11은 추가 제약이 없다.

문제 제공: Benjamin Qi and Michael Cao

입력 형식

첫째 줄에 \(N\)이 주어진다.

\(1\le i\le N\)에 대해, \(i+1\)번째 줄에 공백으로 구분된 두 정수 \(a_i\)\(v_i\)가 주어진다.

출력 형식

답을 나타내는 정수 하나를 출력한다.

이 문제에서 다루는 정수는 크기가 커서 64비트 정수 자료형(예: C/C++의 "long long")이 필요할 수 있음에 유의하라.

예제 1
입력
4
2 10
3 20
4 30
1 40
출력
90
설명

If \(p=(1,4,3,2)\) then

  • Buddy \(1\) visits buddy \(2\)'s farm, resulting in \(10\) moos.
  • Buddy \(4\) sees that buddy \(1\) has already departed, so nothing happens.
  • Buddy \(3\) visits buddy \(4\)'s farm, adding \(30\) moos.
  • Buddy \(2\) sees that buddy \(3\) has already departed, so nothing happens.

This gives a total of \(10+30=40\) moos.

On the other hand, if \(p=(2,3,4,1)\) then

  • Buddy \(2\) visits buddy \(3\)'s farm, causing \(20\) moos.
  • Buddy \(3\) visits buddy \(4\)'s farm, causing \(30\) moos.
  • Buddy \(4\) visits buddy \(1\)'s farm, causing \(40\) moos.
  • Buddy \(1\) sees that buddy \(2\) has already departed, so nothing happens.

This gives \(20+30+40=90\) total moos. It can be shown that
this is the maximum possible amount after all visits, over all
permutations \(p\).

문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2021-2022 > US Open > Silver

태그

평가 및 의견

Visits

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Visits

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8