728x90
import java.util.*;
public class Main{
static int c, v, e, n, m;
static int[][] edge;
static int[][] dist;
static int[] num;
static int[] location;
static int[] fire;
static int[] value;
static int[] value2;
public static void main(String args[]) throws Exception {
edge = new int[1002][1002];
dist = new int[1002][1002];
num = new int[1002];
value = new int[1002];
value2 = new int[1002];
location = new int[1002];
fire = new int[1002];
int test = 0;
Scanner scanner = new Scanner(System.in);
test = scanner.nextInt();
for(int i = 0; i < test; i++){
int sum = 0;
v = scanner.nextInt();
e = scanner.nextInt();
n = scanner.nextInt();
m = scanner.nextInt();
Arrays.fill(num, 1);
Arrays.fill(value, 0x7fffffff);
for(int j = 1; j <= e; j++){
int a, b, c;
a = scanner.nextInt();
b = scanner.nextInt();
c = scanner.nextInt();
edge[a][num[a]] = b;
edge[b][num[b]] = a;
dist[a][num[a]] = c;
dist[b][num[b]] = c;
num[a]++;
num[b]++;
}
for(int j = 1; j <= n; j++)
location[j] = scanner.nextInt();
for(int j = 1; j <= m; j++)
fire[j] = scanner.nextInt();
for(int j = 1; j <= m; j++){
edge[v+1][num[v+1]] = fire[j];
edge[fire[j]][num[fire[j]]] = v+1;
dist[v+1][num[v+1]] = 0;
dist[fire[j]][num[fire[j]]] = 0;
num[v+1]++;
num[fire[j]]++;
}
sum = di(v+1,v+1);
System.out.println(sum);
}
}
static public int di(int from, int v){
int sum = 0;
int visit[];
visit = new int[1002];
Arrays.fill(value2, 0x7fffffff);
Arrays.fill(visit, 0);
value2[from] = 0;
for(int i = 1; i <= v; i++){
int now = 0;
int nowd = 0x7fffffff;
for(int j = 1; j <= v; j++){
if(value2[j] < nowd && visit[j] == 0){
now = j;
nowd = value2[j];
}
}
if(nowd == 0x7fffffff)
break;
visit[now] = 1;
for(int j = 1; j < num[now]; j++){
int a = value2[now];
int b = dist[now][j];
int c = edge[now][j];
if(a + b < value2[c]){
value2[c] = a + b;
}
}
}
for(int j = 1; j <= n; j++)
sum += value2[location[j]];
return sum;
}
}
728x90
'코딩' 카테고리의 다른 글
알고스팟 자바(java) 해답 : ARCTIC (0) | 2021.05.14 |
---|---|
알고스팟 자바(java) 해답 : LAN (0) | 2021.05.14 |
알고스팟 자바(java) 해답 : ROUTING(error) (0) | 2021.05.14 |
알고스팟 자바(java) 해답 : TILING2 (0) | 2021.05.14 |
알고스팟 자바(java) 해답 : QUANTIZE (0) | 2021.05.14 |