1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| public class programmers_합승택시요금_kgh { static int[][] graph; static int INF = 200 * 100000; public static void main(String[] args) { solution(6,4,6,2,new int[][]{ {4, 1, 10}, {3, 5, 24}, {5, 6, 2}, {3, 1, 41}, {5, 1, 24}, {4, 6, 50}, {2, 4, 66}, {2, 3, 22}, {1, 6, 25}}); }
static int solution(int n, int s, int a, int b, int[][] fares){ graph = new int[201][201]; int answer = INF;
for(int i=0; i<201; i++){ Arrays.fill(graph[i], INF); } for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ if(i == j){ graph[i][j] = 0; } } } for(int i=0; i<fares.length; i++){ int x = fares[i][0]; int y = fares[i][1]; int w = fares[i][2]; graph[x][y] = w; graph[y][x] = w;
} for(int k=1; k<=n; k++){ for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ graph[i][j] = Math.min(graph[i][j], graph[i][k] + graph[k][j]); } } }
for(int i=1; i<=n; i++){ answer = Math.min(answer,graph[s][i] + graph[i][a] + graph[i][b]); } System.out.println(answer); return 0; } }
|