백준공부/java
[백준] 14938번 서강그라운드 (gold 4
gomduri43
2023. 10. 12. 23:53
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[]args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st=new StringTokenizer(br.readLine());
int n=Integer.valueOf(st.nextToken());
int m=Integer.valueOf(st.nextToken());
int r=Integer.valueOf(st.nextToken());
int[] item=new int[n+1];
st=new StringTokenizer(br.readLine());
for(int i=1; i<=n; i++){
item[i]=Integer.valueOf(st.nextToken());
}
int[][] map=new int[n+1][n+1];
for(int i=1; i<=n; i++){
Arrays.fill(map[i],100);
}
for(int i=0; i<r; i++){
st=new StringTokenizer(br.readLine());
int a=Integer.valueOf(st.nextToken());
int b=Integer.valueOf(st.nextToken());
int c=Integer.valueOf(st.nextToken());
map[a][b]=c;
map[b][a]=c;
}
for(int k=1; k<=n; k++){
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
if(i==j || map[i][k]==100 || map[k][j]==100){
continue;
}
map[i][j]=Math.min(map[i][j], map[i][k]+map[k][j]);
}
}
}
int answer=0;
for(int i=1; i<=n; i++){
int temp=item[i];
for(int j=1; j<=n; j++){
if(j!=i && map[i][j]<=m){
temp+=item[j];
}
}
answer= Math.max(temp,answer);
}
bw.write(answer+"");
bw.flush();
}
}