01-09 04:37
Recent Posts
Recent Comments
Tags
- ์จ์ผ๋ํ
- JOBํ๊ณ
- python
- API๋ง์ผํ๋ ์ด์ค
- Spring
- ์คํฝ์ค๋น
- ์ด๋ธ์
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- ํ์ด์ฌ
- RaspberryPi
- ict๊ณต๋ชจ์
- ํ์ด์๊ณต๋ชจ์
- ํ๋ก๋ณด๋ ธ
- appetizer
- ์คํฝ๋ ํ
- ์๋์ด๋ ธ
- linux
- Java
- mysql
- ์๋ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ICT
- DB
- TSQL
- ํ์ด์
- Naver Cloud
- ICT๋ฉํ ๋ง
- DATABASE
- ์กํ๊ณ
- SQL
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค ๋ค์ต์คํธ๋ผ 1753 :: ์ต๋จ ๊ฒฝ๋ก ๋ณธ๋ฌธ
Algorithm/Baekjoon
[BAEKJOON] ๋ฐฑ์ค ๋ค์ต์คํธ๋ผ 1753 :: ์ต๋จ ๊ฒฝ๋ก
miinsun 2022. 6. 9. 15:10
๐ฌ ๋ฌธ์ ์ค๋ช
๋ฐฉํฅ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ง๋ฉด ์ฃผ์ด์ง ์์์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ์ผ๋ก์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๋จ, ๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๋ 10 ์ดํ์ ์์ฐ์์ด๋ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ V์ ๊ฐ์ ์ ๊ฐ์ E๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000)
- ๋ชจ๋ ์ ์ ์๋ 1๋ถํฐ V๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
- ๋์งธ ์ค์๋ ์์ ์ ์ ์ ๋ฒํธ K(1 ≤ K ≤ V)๊ฐ ์ฃผ์ด์ง๋ค.
- ์
์งธ ์ค๋ถํฐ E๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ๊ฐ์ ์ ๋ํ๋ด๋ ์ธ ๊ฐ์ ์ ์ (u, v, w)๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค.
- ์ด๋ u์์ v๋ก ๊ฐ๋ ๊ฐ์ค์น w์ธ ๊ฐ์ ์ด ์กด์ฌํ๋ค๋ ๋ป์ด๋ค.
- u์ v๋ ์๋ก ๋ค๋ฅด๋ฉฐ w๋ 10 ์ดํ์ ์์ฐ์์ด๋ค.
- ์๋ก ๋ค๋ฅธ ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์กด์ฌํ ์๋ ์์์ ์ ์ํ๋ค.
์ถ๋ ฅ
- ์ฒซ์งธ ์ค๋ถํฐ V๊ฐ์ ์ค์ ๊ฑธ์ณ, i๋ฒ์งธ ์ค์ i๋ฒ ์ ์ ์ผ๋ก์ ์ต๋จ ๊ฒฝ๋ก์ ๊ฒฝ๋ก๊ฐ์ ์ถ๋ ฅํ๋ค.
- ์์์ ์์ ์ 0์ผ๋ก ์ถ๋ ฅํ๊ณ , ๊ฒฝ๋ก๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ INF๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
์์ ์ ๋ ฅ 1)
5 6
1
5 1 1
1 2 2
1 3 3
2 3 4
2 4 5
3 4 6
์์ ์ถ๋ ฅ 1)
0
2
3
7
INF
โ
๐ป Main.java
- ๊ทธ๋ํ๋ฅผ 2์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ํํํด์ค๋ค
- ๊ฐฑ์ ๋ ๋
ธ๋๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉ
- ์ด๋ ์ฐ์ ์์ ํ๋ฅผ ํญ์ ์ต๋จ ๊ฒฝ๋ก ์์ผ๋ก ์ ๋ ฌ์ด ๋ณด์ฅ๋๋ค
- ์ต๋จ ๊ฒฝ๋ก๋ ์ ์ฅํ๊ธฐ ์ํด int ๋ฐฐ์ด result๋ฅผ ์์ฑํด์คฌ๋ค
/* ๋ฐฑ์ค ๋ค์ต์คํธ๋ผ - 1753 :: ์ต๋จ๊ฒฝ๋ก */
import java.util.*;
import java.io.*;
class Node implements Comparable<Node>{
int index;
int distacne;
Node(int index, int distacne) {
this.index = index;
this.distacne = distacne;
}
@Override
public int compareTo(Node o) {
return Integer.compare(this.distacne, o.distacne);
}
}
public class Main {
static final int INF = 9999999;
static List<List<Node>> graph = new ArrayList<>();
static int[] result;
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner (System.in);
int v = sc.nextInt();
int e = sc.nextInt();
int k = sc.nextInt();
for(int i = 0; i <= v; i++) {
graph.add(new ArrayList<>());
}
result = new int[v + 1];
Arrays.fill(result, INF);
// ๋ฌธ์ ์์ ์ฃผ์ด์ง ์
๋ ฅ ๊ฐ์ ๋ฐ๋ผ ๊ทธ๋ํ ์ด๊ธฐํ
for (int i = 0; i < e; i++) {
graph.get(sc.nextInt()).add(new Node(sc.nextInt(), sc.nextInt()));
}
// ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์ํ
dijkstra(k);
// ๋ฌธ์ ์์ ์ ์ํ ์กฐ๊ฑด์ ๋ง๊ฒ ์ถ๋ ฅ
for (int i = 1; i < result.length; i++) {
if(result[i] == INF) {
System.out.println("INF");
}else {
System.out.println(result[i]);
}
}
sc.close();
}
static void dijkstra(int start) {
// ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐฑ์ ๋ ๋
ธ๋๋ค์ ๋ด์ ์ฐ์ ์์ ํ ์์ฑ
PriorityQueue<Node> pq = new PriorityQueue<>();
result[start] = 0;
pq.offer(new Node(start, result[start]));
while(!pq.isEmpty()) {
Node node = pq.poll();
int nodeIndex = node.index;
int distance = node.distacne;
// ์ค๋ณต ๋ฐฉ๋ฌธ ๊ฒ์ฌ
if(distance > result[nodeIndex]) {
continue;
}
for (Node linkedNode : graph.get(nodeIndex)) {
// ์๋ก ์ฐพ์ ๊ฐ์ด ์ต๋จ ๊ฑฐ๋ฆฌ๋ฉด, ์ต๋จ ๊ฑฐ๋ฆฌ ๊ฐฑ์ ํด์ฃผ๊ธฐ
if(distance + linkedNode.distacne < result[linkedNode.index]) {
result[linkedNode.index] = distance + linkedNode.distacne;
pq.offer(new Node(linkedNode.index, result[linkedNode.index]));
}
}
}
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๊ตฌํ 1316 :: ๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค (0) | 2022.06.10 |
---|---|
[BAEKJOON] ๋ฐฑ์ค ํ๋ก์ด๋ ์์ 11404 :: ํ๋ก์ด๋ (0) | 2022.06.09 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ฆฌ๋ 1700 :: ๋ฉํฐํญ ์ค์ผ์ค๋ง (0) | 2022.06.07 |
[BAEKJOON] ๋ฐฑ์ค DFS 1012 :: ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.04.23 |
[BAEKJOON] ๋ฐฑ์ค DFS 2606 :: ๋ฐ์ด๋ฌ์ค (0) | 2022.04.23 |
Comments