얽힌 케이블
시간 제한1초메모리 제한128 MB
마을 지도의 최소 신장 트리를 구해 전체 길이를 케이블 한 롤의 길이와 비교한다.
문제
당신은 SmallCableCo의 사장으로, 작은 마을의 사업권을 사들였습니다. 하지만 사업을 제대로 시작할 자금이 부족해, 예전에 사들인 낡은 창고에서 찾아낸 부품들에 의존하고 있습니다. 그 부품들 중에는 케이블이 감긴 실패(스풀) 하나와 많은 커넥터가 있습니다.
당신은 이 케이블만으로 마을의 모든 집을 연결할 수 있는지 알고 싶습니다. 마을 지도에는 집들 사이에 케이블을 놓을 수 있는 모든 경로와 각 경로의 거리가 표시되어 있습니다. 모든 집을 하나로 연결하는 데 필요한 케이블의 최소 길이를 구하세요.
입력
입력에는 마을 하나의 정보만 주어집니다.
- 첫째 줄: 실패에 감긴 케이블의 길이가 실수로 주어집니다.
- 둘째 줄: 집의 개수 .
- 다음 개의 줄: 각 집주인의 이름이 한 줄에 하나씩 주어집니다. 이름은 공백이나 문장부호 없이 {a–z, A–Z, 0–9}로만 이루어진 최대 20자의 문자열입니다.
- 그 다음 줄: 집들 사이 경로의 개수 .
- 다음 개의 줄: 각 줄은
집이름A 집이름B 거리형식입니다. 두 집 이름은 위 목록에 있는 서로 다른 두 집과 일치하며, 거리는 양의 실수입니다. 같은 두 집 사이에 두 개 이상의 경로가 주어지는 일은 없습니다.
출력
출력은 한 줄입니다.
마을의 모든 집을 연결하기에 케이블이 부족하다면 다음을 출력합니다.
Not enough cable
케이블이 충분하다면 다음을 출력합니다.
Need <X> miles of cable
여기서 는 모든 집을 연결하는 데 필요한 케이블의 최소 길이이며, 소수 첫째 자리(0.1 마일)까지 반올림하여 출력합니다.