Logo
(追記) (追記ここまで)

32156번 - Minimum Spanning Arborescence

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 (추가 시간 없음) 1024 MB (추가 메모리 없음)83363140.789%

문제

Arborescence $G=(V,A)$는 다음 조건을 만족하는 방향 그래프를 의미한다.

  • 모든 정점 $v \in V$에 대해 정점 $r$에서 정점 $v$로 가는 경로가 존재하는, 정점 $r \in V$가 존재한다. 이때, 이 정점 $r$을 루트 노드(root node)라 한다.
  • $A$의 방향을 없앤 간선 집합 $E$에 대해, 무방향 그래프 $G'=(V,E)$는 트리(tree)다.

간선에 가중치가 있고 사이클(cycle)이 없는 방향 그래프 $G=(V,A)$와 정점 $r$이 주어진다. 주어진 그래프의 각 정점에는 1ドル$부터 $N$까지의 번호가 붙어있다. 이때, 정점 $r$을 루트 노드로 하는 Spanning Arborescence 중 간선 가중치의 합이 최소인 것을 구하려고 한다.

이와 관련된 알고리즘으로 $O(|V||A|)$에 작동하는 Chu-Liu-Edmonds’ Algorithm, Tarjan이 이를 개선하여 시간 복잡도를 $O(|A| \log |V|)$로 줄인 알고리즘이 있지만, 당연히 해당 알고리즘을 사용하라고 문제 낸 것은 아니다.

주어진 그래프에서 정점 $r$을 루트 노드로 하는 Spanning Arborescence의 간선 가중치 합의 최솟값을 구해보자.

입력

첫 번째 줄에 정점의 개수 $N,ドル 간선의 개수 $M,ドル 루트로 삼아야 할 정점 $r$의 정점 번호가 공백으로 구분되어 주어진다. (1ドル \le N \le 500,000円$; 0ドル \le M \le 1,000円,000円$; 1ドル \le r \le N$)

두 번째 줄부터 $M$개의 줄에 걸쳐 $M$개의 간선에 대한 정보를 나타내는 세 정수 $u,ドル $v,ドル $c$가 공백으로 구분되어 주어진다. 이는 가중치가 $c$인 정점 $u$에서 정점 $v$로 가는 간선이 있음을 의미한다. (1ドル \le u, v \le N$; $u \ne v$; 1ドル \le c \le 1,000円,000円,000円$)

주어진 그래프의 임의의 두 정점을 연결하는 간선의 개수는 최대 한 개이며, 주어진 그래프에서 사이클(cycle)은 존재하지 않는다.

출력

정점 $r$을 루트 노드로 하는 Spanning Arborescence의 간선 가중치 합의 최솟값을 출력한다. 단, 정점 $r$을 루트 노드로 하는 Spanning Arborescence가 존재하지 않는다면 -1을 출력한다.

제한

예제 입력 1

3 3 1
1 2 1
1 3 2
2 3 3

예제 출력 1

3

예제 입력 2

3 3 1
1 2 1
1 3 4
2 3 3

예제 출력 2

4

예제 입력 3

2 1 1
2 1 10

예제 출력 3

-1

힌트

출처

University > 신촌지역 대학생 프로그래밍 대회 동아리 연합 > 2024 신촌지역 대학생 프로그래밍 동아리 연합 여름 대회 (SUAPC 2024 Summer) 연습 세션 PC번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /