μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- νμ λΆκΈ°
- SWEA
- λ°±μ€
- νμ΄μ½ μ΄λμ½λ
- php
- μλ°
- php νλ‘κ·Έλλ° μ λ¬Έ μ°μ΅λ¬Έμ
- C
- Flutter
- νμ΄μ½ μΆμ²μΈ
- php νλ‘κ·Έλλ° μ λ¬Έ μ루μ
- νλ¬ν° κ°λ°νκ²½ μ€μ
- php νλ‘κ·Έλλ° μ λ¬Έ
- spring
- php νλ‘κ·Έλλ° μ λ¬Έ μμ
- php νλ‘κ·Έλλ° μ λ¬Έ 3ν
- CμΈμ΄
- νλ¬ν°
- JAVA SPRING
- λ°°μ΄
- νμ΄μ½ μΉκ΅¬μ½λ
- νμ΄μ½ μΆμ²μΈμ½λ
- μ΅λ¨ κ²½λ‘
- νμ΄μ¬
- μ€νλ§
- programmers
- Java
- php νλ‘κ·Έλλ° μ λ¬Έ λ¬Έμ νμ΄
- php νλ‘κ·Έλλ°
- μλ° μ€νλ§
- Today
- Total
ImJay
[BOJ/Java] 11657. νμλ¨Έμ λ³Έλ¬Έ
π [BOJ/Java] 11657. νμλ¨Έμ
π‘ λ¬Έμ ν΄μ
ν λμμμ λ€λ₯Έ λμλ‘ μ΄λνλ λ²μ€ λ
Έμ μ΄ μ£Όμ΄μ§λ€.
μΌλΆ λ
Έμ μλ μμ κ°μ€μΉ(μκ°)κ° μ‘΄μ¬νλ©°, μμ μ¬μ΄ν΄μ΄ λ°μν μλ μλ€.
πΉ μ£Όμ΄μ§ μ 보
- N: λμμ κ°μ (λ Έλ)
- M: λ²μ€ λ Έμ μ κ°μ (κ°μ )
- A B C: Aλ² λμμμ Bλ² λμλ‘ κ°λ μκ°μ΄ C(μμ λλ μμ)
β
λͺ©ν:
1οΈβ£ 1λ² λμμμ λͺ¨λ λμλ‘ κ°λ μ΅λ¨ μκ°μ ꡬνλ€.
2οΈβ£ μμ μ¬μ΄ν΄μ΄ μ‘΄μ¬νλμ§ νλ³νλ€.
3 4
1 2 4
1 3 3
2 3 -1
3 1 -2
π 1 → 2 → 3 → 1λ‘ λμμ€λ©΄ μμ μ¬μ΄ν΄ λ°μ!
π νμ΄ κ³Όμ
1οΈβ£ 벨λ§-ν¬λ (Bellman-Ford) μκ³ λ¦¬μ¦ μ¬μ©
β μμ κ°μ€μΉκ° μ‘΄μ¬ν μ μκΈ° λλ¬Έμ λ€μ΅μ€νΈλΌκ° μλ 벨λ§-ν¬λ μκ³ λ¦¬μ¦μ μ¬μ©
β N-1λ² λͺ¨λ κ°μ μ νμΈνλ©° μ΅λ¨ κ²½λ‘ κ°±μ
β Nλ²μ§Έ κ°±μ μμ κ°μ΄ μ€μ΄λ€λ©΄ μμ μ¬μ΄ν΄ μ‘΄μ¬!
2οΈβ£ μκ³ λ¦¬μ¦ μ§ν λ°©μ
β
λͺ¨λ μ΅λ¨ κ²½λ‘λ₯Ό **무νλ(INF)**λ‘ μ΄κΈ°ν
β
N-1λ² λμ λͺ¨λ κ°μ μ μννλ©΄μ 거리 κ°±μ
β
Nλ²μ§Έ λ°λ³΅μμ κ°±μ μ΄ λ°μνλ©΄ μμ μ¬μ΄ν΄ μ‘΄μ¬!
π» μ½λ (Java)
import java.util.*;
public class Main {
static final long INF = Long.MAX_VALUE;
static int N, M;
static List<Edge> edges;
static long[] dist;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
edges = new ArrayList<>();
dist = new long[N + 1];
Arrays.fill(dist, INF);
dist[1] = 0; // μμμ μ€μ
for (int i = 0; i < M; i++) {
int u = sc.nextInt();
int v = sc.nextInt();
int w = sc.nextInt();
edges.add(new Edge(u, v, w));
}
if (bellmanFord()) {
System.out.println("-1"); // μμ μ¬μ΄ν΄ μ‘΄μ¬
} else {
for (int i = 2; i <= N; i++) {
System.out.println(dist[i] == INF ? "-1" : dist[i]);
}
}
}
static boolean bellmanFord() {
boolean updated = false;
for (int i = 1; i < N; i++) { // N-1λ² λ°λ³΅
updated = false;
for (Edge edge : edges) {
if (dist[edge.u] != INF && dist[edge.v] > dist[edge.u] + edge.w) {
dist[edge.v] = dist[edge.u] + edge.w;
updated = true;
}
}
if (!updated) break;
}
// Nλ²μ§Έ λ°λ³΅μμ κ°±μ λ°μνλ©΄ μμ μ¬μ΄ν΄ μ‘΄μ¬
for (Edge edge : edges) {
if (dist[edge.u] != INF && dist[edge.v] > dist[edge.u] + edge.w) {
return true;
}
}
return false;
}
static class Edge {
int u, v, w;
public Edge(int u, int v, int w) {
this.u = u;
this.v = v;
this.w = w;
}
}
}
β± μκ° λ³΅μ‘λ λΆμ
- 벨λ§-ν¬λ μκ³ λ¦¬μ¦: O(N × M)
- N ≤ 500, M ≤ 6000μ΄λ―λ‘ μ΅μ μ κ²½μ° 500 × 6000 = 3,000,000 μ°μ° (κ°λ₯)
π§ λλ μ
π 벨λ§-ν¬λλ₯Ό νμ©ν λνμ μΈ λ¬Έμ μλ€.
β‘οΈ μμ κ°μ€μΉκ° ν¬ν¨λ κ²½μ°λ λ€μ΅μ€νΈλΌ λμ 벨λ§-ν¬λ μ¬μ©!
β‘οΈ Nλ²μ§Έ κ°±μ μ¬λΆλ₯Ό 체ν¬νλ©΄ μμ μ¬μ΄ν΄ νλ³μ΄ κ°λ₯νλ€.
π λν
μΌν λΆλΆμμ μ€μνκΈ° μ¬μ λ€.
β
dist λ°°μ΄μ Long νμ
μΌλ‘ μ μΈν΄μΌ μ€λ²νλ‘μ° λ°©μ§ κ°λ₯!
β
μμμ (1λ² λμ)μ 0μΌλ‘ μ΄κΈ°ννλ κ² μμ§ μκΈ°
β
μμ μ¬μ΄ν΄μ΄ μ‘΄μ¬νλ©΄ -1μ λ°λ‘ μΆλ ₯νκ³ μ’
λ£ν΄μΌ νλ€.
π μμ κ°μ€μΉ κ·Έλν λ¬Έμ λ₯Ό μ°μ΅νλ λ° μμ£Ό μ’μ λ¬Έμ μλ€! π
'μκ³ λ¦¬μ¦ > BOJ - Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ/Java] 11404. νλ‘μ΄λ (0) | 2025.03.10 |
---|---|
[BOJ/Java] 2931. κ°μ€κ΄ (0) | 2025.03.10 |
[BOJ/Java] 1981. λ°°μ΄μμ μ΄λ (1) | 2025.03.10 |
[BOJ/Java] 9370. λ―ΈνμΈ λμ°©μ§ (0) | 2025.03.10 |
[BOJ/Java] 1039. κ΅ν (0) | 2025.03.10 |