* 최종적으로 연결해야 할 것은 1번 발전소에서 맨 마지막 N 번 발전소 -- 이때 발전소 간의 가중치가 있기 때문에 dijkstra 알고리즘을 사용해보자.
* 그래프 구성 -- 정점인 발전소의 개수가 1000개로 크지 않으므로 인접 행렬로 처리해도 무방함 -- 거리 기준으로 발전소 간 그래프를 만들어야 하기 때문에 double[][] 형태로 구성 -- 이 거리가 간선의 가중치 -- 거리를 구한다고 바로 간선이 연결될 수 있는 것은 아니고 안전을 이유로 전선의 길이 M을 초과할 수 없다. -- 또 하나 주의 할 점은 이미 연결이 유지된 발전소들도 있다는 점이다.-- 이 발전소들은 가중치가 0이어야 한다. -- 즉 새롭게 연결해야하는 곳에만 가중치가 있다.
* 거리 구하기 -- 거리는 피타고라스 정리로 처리 -- 이 과정에서 두 점의 차이에 제곱을 하는데 최악의 경우 (100000+100000)*(100000+100000)를 처리해야 하므로 int 범위를 넘어간다.
입력사항
* 발전소의 수 N(1 ≤ N ≤ 1,000) * 현재 남아있는 전선의 수 W(1≤ W ≤ 10,000) -- 남아있는 전선의 수라기 보다는 연결이 유지된 발전소의 개수라고 하는 편이 이해가 쉽다. * 두 번째 줄에는 제한 길이 M(0.0 < M < 200,000.0) * 발전소의 X좌표와 Y좌표(-100,000 ≤ xi,yi ≤ 100,000)
출력사항
* 1번 발전소와 N번 발전소를 잇는데 필요한 추가 전선 길이의 최솟값을 1000배하여 출력 * (단, 1000배하고 난 후 나머지 소수는 반올림이 아닌 버림)
동영상 설명
1시간 이상 고민 했지만 아이디어가 떠오르지 않는다면 동영상에서 약간의 힌트를 얻어봅시다.