코드와이
[SW Expert Academy] 1251. 하나로 본문
prim
문제링크
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
package D4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 하나로 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for(int tc = 1; tc <= T ; tc++) {
sb.append("#").append(tc).append(" ");
int n = Integer.parseInt(br.readLine());
double[] xArr = new double[n];
double[] yArr = new double[n];
st = new StringTokenizer(br.readLine());
for(int i = 0 ; i < n ; i++) {
xArr[i] = Double.parseDouble(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for(int i = 0 ; i < n ; i++) {
yArr[i] = Double.parseDouble(st.nextToken());
}
double[][] arr = new double[n][n];
for(int i = 0 ; i < n ; i++) {
for(int j = i + 1 ; j < n ; j++) {
if(i == j) continue;
arr[i][j] = Math.sqrt(
(xArr[i] - xArr[j])*(xArr[i] - xArr[j]) +
(yArr[i] - yArr[j])*(yArr[i] - yArr[j]));
arr[j][i] = arr[i][j];
}
}
double e = Double.parseDouble(br.readLine());
boolean[] visited = new boolean[n];
double[] minEdge = new double[n];
Arrays.fill(minEdge, Double.MAX_VALUE);
minEdge[0] = 0;
double sum = 0;
for(int i = 0 ; i < n ; i++) {
double min = Double.MAX_VALUE;
int minVertex = 0;
for(int j = 0 ; j < n ; j++) {
if(!visited[j] && min > minEdge[j]) {
min = minEdge[j];
minVertex = j;
}
}
sum += e * Math.pow(min, 2);
visited[minVertex] = true;
for(int j = 0 ; j < n ; j++) {
if(!visited[j] && minEdge[j] > arr[minVertex][j]) {
minEdge[j] = arr[minVertex][j];
}
}
}
sb.append(Math.round(sum)).append("\n");
}
sb.setLength(sb.length() - 1);
System.out.println(sb);
}
}
'SW_Expert' 카테고리의 다른 글
[SW Expert Academy] 1263. [S/W 문제해결 응용] 8일차 - 사람 네트워크2 (0) | 2021.03.25 |
---|---|
[SW Expert Academy] 5550. 나는 개구리로소이다 (0) | 2021.03.24 |
[SW Expert Academy] 3289. 서로소 집합 (0) | 2021.03.19 |
[SW Expert Academy] 1258. [S/W 문제해결 응용] 7일차 - 행렬찾기 (0) | 2021.03.16 |
[SW Expert Academy] 4613. 러시아 국기 같은 깃발 (0) | 2021.03.15 |