Skip to content

Commit fe1055e

Browse files
committed
[20251229] BOJ / G3 / 택배 / 김민진
1 parent 18c3ae6 commit fe1055e

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
```java
2+
import java.io.*;
3+
import java.util.Arrays;
4+
import java.util.StringTokenizer;
5+
6+
public class BJ_1719_택배 {
7+
8+
private static final int INF = 987654321;
9+
10+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
12+
private static final StringBuilder sb = new StringBuilder();
13+
private static StringTokenizer st;
14+
15+
private static int N, M;
16+
private static int[][] dist, route;
17+
18+
private static class Node {
19+
int to;
20+
int weight;
21+
22+
Node(int to, int weight) {
23+
this.to = to;
24+
this.weight = weight;
25+
}
26+
27+
}
28+
29+
public static void main(String[] args) throws IOException {
30+
init();
31+
sol();
32+
}
33+
34+
private static void init() throws IOException {
35+
st = new StringTokenizer(br.readLine());
36+
N = Integer.parseInt(st.nextToken());
37+
M = Integer.parseInt(st.nextToken());
38+
39+
dist = new int[N + 1][N + 1];
40+
route = new int[N + 1][N + 1];
41+
for (int i = 1; i <= N; i++) {
42+
Arrays.fill(dist[i], INF);
43+
dist[i][i] = 0;
44+
}
45+
46+
for (int i = 0; i < M; i++) {
47+
st = new StringTokenizer(br.readLine());
48+
49+
int a = Integer.parseInt(st.nextToken());
50+
int b = Integer.parseInt(st.nextToken());
51+
int c = Integer.parseInt(st.nextToken());
52+
53+
dist[a][b] = dist[b][a] = Math.min(dist[a][b], c);
54+
route[a][b] = b;
55+
route[b][a] = a;
56+
}
57+
}
58+
59+
private static void sol() throws IOException {
60+
for (int k = 1; k <= N; k++) {
61+
for (int i = 1; i <= N; i++) {
62+
for (int j = 1; j <= N; j++) {
63+
if (dist[i][j] > dist[i][k] + dist[k][j]) {
64+
dist[i][j] = dist[i][k] + dist[k][j];
65+
route[i][j] = route[i][k];
66+
}
67+
}
68+
}
69+
}
70+
71+
for (int i = 1; i <= N; i++) {
72+
for (int j = 1; j <= N; j++) {
73+
sb.append(i == j ? "-" : route[i][j]);
74+
if (j < N) sb.append(" ");
75+
}
76+
sb.append("\n");
77+
}
78+
bw.write(sb.toString());
79+
bw.flush();
80+
bw.close();
81+
br.close();
82+
}
83+
84+
}
85+
```

0 commit comments

Comments
 (0)