만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

왕의 경비병

시간 제한1초메모리 제한2048 MB

요약
모든 마을이 정확히 한 명의 경비병에게 닿도록 도로를 개량하는 최소 비용을 구합니다. 각 경비병은 자신이 배치될 수 있는 마을 중 한 곳에 놓입니다.
난이도

어려움10점 중 8점

유형
그래프, 최소 신장 트리, 유니온 파인드
정답자
아직 제출이 없습니다

문제

어느 왕국에서 왕은 경비병을 배치해 백성을 지키려 합니다. 왕은 경비병을 여러 명 모았고, 도적, 외국 기사, 그 밖의 무법자로부터 보호하도록 무거운 갑옷을 입혔습니다. 경비병은 튼튼하지만 머리가 그리 좋지 않아서, 갑옷을 입은 자라면 동료라도 공격합니다.

왕국은 도로로 연결된 여러 마을로 이루어져 있습니다. 모든 도로의 상태가 나쁩니다. 진흙탕 길도 있고, 삐걱거리는 다리가 놓인 길도 있습니다. 어느 도로도 갑옷을 입은 경비병을 지탱하지 못합니다. 그래서 왕은 경비병이 왕국 전체에 도달할 수 있도록 어느 도로를 개량할지 정해야 합니다. 도로는 양방향입니다. 각 경비병은 왕국 마을의 특정 부분집합에 속한 마을 한 곳에만 배치될 수 있습니다. 부분집합끼리는 겹칠 수 있습니다.

왕은 다음 조건을 지키면서 도로 개량 비용을 최소로 줄이려 합니다.

  • 모든 경비병을 배치해야 합니다. 한 명도 빠뜨릴 수 없습니다.
  • 각 경비병은 자신의 부분집합에 속한 마을에 배치해야 합니다.
  • 모든 마을은 정확히 한 명의 경비병만 도달할 수 있어야 합니다. 두 경비병이 서로 도달할 수 있으면 둘은 싸웁니다.

모든 조건을 만족하는 도로 개량의 최소 비용을 구하세요.

입력

첫 줄에 세 정수 nn (1≤n≤3001 \le n \le 300), rr (0≤r≤n⋅(n−1)20 \le r \le \frac{n \cdot (n-1)}{2}), gg (1≤g≤n1 \le g \le n)가 주어집니다. 여기서 nn은 마을 수, rr은 도로 수, gg는 경비병 수입니다. 마을은 1부터 nn까지 번호가 매겨져 있습니다.

이어지는 rr개의 줄에는 세 정수 aa, bb (1≤a<b≤n1 \le a < b \le n), cc (1≤c≤1 0001 \le c \le 1\,000)가 주어집니다. 이는 마을 aa와 bb를 잇는 도로이며, 개량 비용은 cc입니다. 도로는 양방향입니다. 두 마을 사이에는 도로가 최대 하나 있습니다.

이어지는 gg개의 줄은 정수 kk (1≤k≤n1 \le k \le n)로 시작하고, 뒤이어 kk개의 정수 vv (1≤v≤n1 \le v \le n)가 나옵니다. 한 경비병을 배치할 수 있는 마을의 목록입니다. 부분집합끼리는 겹칠 수 있습니다.

출력

정수 하나를 출력합니다. 모든 마을이 정확히 한 명의 경비병에게만 도달되고 모든 경비병이 배치되도록 도로를 개량하는 최소 비용입니다. 모든 조건을 만족하는 배치가 불가능하면 −1-1을 출력합니다.

예제1

  1. 예제 1

    입력
    5 6 2
    1 2 1
    1 3 4
    2 4 2
    2 5 5
    3 4 7
    4 5 3
    2 1 2
    2 2 4
    
    예상 출력
    8