DCMSF
시간 제한2초메모리 제한1024 MB
특수 정점의 차수 상한과 좋은 정점의 차수 제한을 지키는 신장 숲 가운데, 간선이 1개부터 N-1개인 경우마다 최소 가중치를 구합니다.
문제
Degree Constrained Spanning Forest(DCSF)는 양의 정수 에 대해 모든 정점의 차수가 이하인 Spanning Forest를 뜻한다. 그래프와 차수 제한 가 주어졌을 때 이 조건을 만족하는 Degree Constrained Spanning Tree를 구하는 문제는 NP-Complete인 것으로 알려져 있다.
지수 시간이 걸리는 문제를 대회에 내고 싶지 않았던 정휘는, 새벽에 5시간 동안 고민한 끝에 여러 조건을 덧붙여 다항 시간에 풀 수 있는 문제를 만들었다.
정점 개와 간선 개로 이루어진 가중치 무방향 그래프가 주어진다. 개의 정점을 골라 특별한 정점으로, 개의 정점을 골라 멋진 정점으로 지정한다. 다음 조건을 만족하는 Spanning Forest 중에서, 간선을 개, 개, , 개 사용한 Spanning Forest의 간선 가중치 합의 최솟값을 각각 구해야 한다.
- 번째 특별한 정점의 차수는 이하이다.
- 특별한 정점끼리는 서로 연결될 수 없다.
- 멋진 정점의 차수는 이하이다.
- 멋진 정점끼리는 서로 연결될 수 없다.
- 한 정점이 특별한 정점이면서 동시에 멋진 정점일 수 있다.
입력
첫째 줄에 , , , 가 공백으로 구분되어 주어진다. (, , )
둘째 줄에 특별한 정점의 목록 가 공백으로 구분되어 주어진다. (, 이면 )
셋째 줄에 특별한 정점의 차수 제한 가 공백으로 구분되어 주어진다. ()
넷째 줄에 멋진 정점의 목록 가 공백으로 구분되어 주어진다. (, 이면 )
다섯째 줄부터 개의 줄에 걸쳐 간선이 잇는 두 정점 번호 , 와 간선의 가중치 가 주어진다. (, , )
같은 정점 쌍을 잇는 간선은 두 번 주어지지 않는다.
입력의 모든 수는 정수이다.
출력
간선 개로 조건을 만족하는 Spanning Forest를 만들 수 있다면 번째 줄에 가중치 합의 최솟값을 출력한다.
간선 개로 조건을 만족하는 Spanning Forest를 만들 수 없다면 번째 줄에 을 출력한다.