Skip to content

Commit 10da0ec

Browse files
authored
Merge pull request #780 from AlgorithmWithGod/LiiNi-coder
[20250830] BOJ / G5 / 간선 이어가기 2 / 이인희
2 parents 32a8453 + 6de43b3 commit 10da0ec

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
import java.util.PriorityQueue;
8+
import java.util.StringTokenizer;
9+
import java.util.Arrays;
10+
11+
public class Main {
12+
private static BufferedReader br;
13+
private static int n, m;
14+
private static List<Node>[] graph;
15+
private static int[] dist;
16+
17+
private static class Node implements Comparable<Node> {
18+
int v;
19+
int w;
20+
21+
public Node(int v, int w) {
22+
this.v = v;
23+
this.w = w;
24+
}
25+
26+
@Override
27+
public int compareTo(Node o) {
28+
return this.w - o.w;
29+
}
30+
}
31+
32+
public static void main(String[] args) throws IOException {
33+
br = new BufferedReader(new InputStreamReader(System.in));
34+
StringTokenizer st = new StringTokenizer(br.readLine());
35+
n = Integer.parseInt(st.nextToken());
36+
m = Integer.parseInt(st.nextToken());
37+
graph = new ArrayList[n + 1];
38+
for (int i = 1; i <= n; i++) {
39+
graph[i] = new ArrayList<>();
40+
}
41+
for (int i = 0; i < m; i++) {
42+
st = new StringTokenizer(br.readLine());
43+
int a = Integer.parseInt(st.nextToken());
44+
int b = Integer.parseInt(st.nextToken());
45+
int c = Integer.parseInt(st.nextToken());
46+
graph[a].add(new Node(b, c));
47+
graph[b].add(new Node(a, c));
48+
}
49+
st = new StringTokenizer(br.readLine());
50+
int s = Integer.parseInt(st.nextToken());
51+
int t = Integer.parseInt(st.nextToken());
52+
53+
dist = new int[n + 1];
54+
Arrays.fill(dist, Integer.MAX_VALUE);
55+
56+
dijkstra(s);
57+
System.out.println(dist[t]);
58+
}
59+
60+
private static void dijkstra(int start) {
61+
PriorityQueue<Node> pq = new PriorityQueue<>();
62+
dist[start] = 0;
63+
pq.add(new Node(start, 0));
64+
65+
while (!pq.isEmpty()) {
66+
Node cur = pq.poll();
67+
int v = cur.v;
68+
int w = cur.w;
69+
if (dist[v] < w)
70+
continue;
71+
for (Node next : graph[v]) {
72+
if (dist[next.v] > dist[v] + next.w) {
73+
dist[next.v] = dist[v] + next.w;
74+
pq.add(new Node(next.v, dist[next.v]));
75+
}
76+
}
77+
}
78+
}
79+
}
80+
81+
```

0 commit comments

Comments
 (0)