π λ¬Έμ
λλ 2020λ , λ°±μ€μ΄λ μλλλΌμ ν κ΅λ―Όμ΄λ€. μλλλΌμλ Nκ°μ μ§μ μ΄ μκ³ Nκ°μ μ§μ μ¬μ΄μλ Mκ°μ λλ‘μ Wκ°μ μνμ΄ μλ€. (λ¨ λλ‘λ λ°©ν₯μ΄ μμΌλ©° μνμ λ°©ν₯μ΄ μλ€.) μνμ μμ μμΉμμ λμ°© μμΉλ‘ κ°λ νλμ κ²½λ‘μΈλ°, νΉμ΄νκ²λ λμ°©μ νκ² λλ©΄ μμμ νμμ λλ³΄λ€ μκ°μ΄ λ€λ‘ κ°κ² λλ€. μν λ΄μμλ μκ³κ° κ±°κΎΈλ‘ κ°λ€κ³ μκ°νμ¬λ μ’λ€.
μκ° μ¬νμ λ§€μ° μ’μνλ λ°±μ€μ΄λ ν κ°μ§ κΆκΈμ¦μ λΉ μ‘λ€. ν μ§μ μμ μΆλ°μ νμ¬μ μκ°μ¬νμ νκΈ° μμνμ¬ λ€μ μΆλ°μ νμλ μμΉλ‘ λμμμ λ, μΆλ°μ νμμ λλ³΄λ€ μκ°μ΄ λλμκ° μλ κ²½μ°κ° μλμ§ μλμ§ κΆκΈν΄μ‘λ€. μ¬λ¬λΆμ λ°±μ€μ΄λ₯Ό λμ μ΄λ° μΌμ΄ κ°λ₯νμ§ λΆκ°λ₯νμ§ κ΅¬νλ νλ‘κ·Έλ¨μ μμ±νμ¬λΌ.
πμ λ ₯
첫 λ²μ§Έ μ€μλ ν μ€νΈμΌμ΄μ€μ κ°μ TC(1 ≤ TC ≤ 5)κ° μ£Όμ΄μ§λ€. κ·Έλ¦¬κ³ λ λ²μ§Έ μ€λΆν° TCκ°μ ν μ€νΈμΌμ΄μ€κ° μ°¨λ‘λ‘ μ£Όμ΄μ§λλ° κ° ν μ€νΈμΌμ΄μ€μ 첫 λ²μ§Έ μ€μλ μ§μ μ μ N(1 ≤ N ≤ 500), λλ‘μ κ°μ M(1 ≤ M ≤ 2500), μνμ κ°μ W(1 ≤ W ≤ 200)μ΄ μ£Όμ΄μ§λ€. κ·Έλ¦¬κ³ λ λ²μ§Έ μ€λΆν° M+1λ²μ§Έ μ€μ λλ‘μ μ λ³΄κ° μ£Όμ΄μ§λλ° κ° λλ‘μ μ 보λ S, E, T μΈ μ μλ‘ μ£Όμ΄μ§λ€. Sμ Eλ μ°κ²°λ μ§μ μ λ²νΈ, Tλ μ΄ λλ‘λ₯Ό ν΅ν΄ μ΄λνλλ° κ±Έλ¦¬λ μκ°μ μλ―Ένλ€. κ·Έλ¦¬κ³ M+2λ²μ§Έ μ€λΆν° M+W+1λ²μ§Έ μ€κΉμ§ μνμ μ λ³΄κ° S, E, T μΈ μ μλ‘ μ£Όμ΄μ§λλ° Sλ μμ μ§μ , Eλ λμ°© μ§μ , Tλ μ€μ΄λλ μκ°μ μλ―Ένλ€. Tλ 10,000λ³΄λ€ μκ±°λ κ°μ μμ°μ λλ 0μ΄λ€.
λ μ§μ μ μ°κ²°νλ λλ‘κ° ν κ°λ³΄λ€ λ§μ μλ μλ€. μ§μ μ λ²νΈλ 1λΆν° NκΉμ§ μμ°μλ‘ μ€λ³΅ μμ΄ λ§€κ²¨μ Έ μλ€.
πμΆλ ₯
TCκ°μ μ€μ κ±Έμ³μ λ§μ½μ μκ°μ΄ μ€μ΄λ€λ©΄μ μΆλ° μμΉλ‘ λμμ€λ κ²μ΄ κ°λ₯νλ©΄ YES, λΆκ°λ₯νλ©΄ NOλ₯Ό μΆλ ₯νλ€.
π λ¬Έμ νμ΄
μ΄ λ¬Έμ λ₯Ό λ³΄κ³ μ²μμλ μνμ μ μΈνκ³ λ°μ΄ν¬μ€νΈλΌ μκ³ λ¦¬μ¦μ μ¬μ©ν΄μ κ°κ°μ μ΅λ¨κ±°λ¦¬λ₯Ό μμλΈ λ€μ μνμ λ§μ΄λμ€ κ°μ μ°μ°νμ¬ μμκ° λμ€λ κ±°λ¦¬κ° μλ€λ©΄ 'YES'λ₯Ό μΆλ ₯νλ©΄ λκ² λ€κ³ μκ°νλ€.
κ·Έλ κ² iλ Έλμμ μΆλ°νμλ λ€λ₯Έ λ Έλμ μ΅λ¨κ±°λ¦¬λ₯Ό μμλλλ° λ€μ λμμ€λ 거리λ₯Ό κ³μ°νλ €λ©΄ λ λ€λ₯Έ ꡬνμ ν΄μΌνλ€...γ γ γ
λ Έλκ° μ΄ 3κ° μμ λ 1λ² λ Έλμμ μΆλ°νλ©΄ κ²°κ³Όκ°μ μλ₯Ό λ€μ΄ [0, 3, 1] μ΄λ°μμΌλ‘ μΆλ° λ Έλλ 0μΌλ‘ κ²°κ³Όκ°μ΄ λμ€κΈ° λλ¬Έμ νλ°ν΄ λμμμ λ 거리λ₯Ό μμκ° μμλ€.
λ°μ μκ³ λ¦¬μ¦ λΆλ₯λ₯Ό 보μλλ° λ²¨λ§ ν¬λ μκ³ λ¦¬μ¦μ΄λΌκ³ μ νμμλ€. κ·Έλμ μ²μμλ λ²¨λ§ ν¬λ μκ³ λ¦¬μ¦μ λ°λ‘ νλ°ν΄ λμμ€λ κ°μ ꡬν μ μμκΉνκ³ κ΅¬κΈλ§ν΄λ³Έ κ²°κ³Ό 그건 μλμλ€..γ
λ°μ΄ν¬μ€νΈλΌ μκ³ λ¦¬μ¦κ³Ό λ²¨λ§ ν¬λμ μ°¨μ΄μ μ λ°λ‘ μμμ κ°μ μ μμλ€.
λ°μ΄ν¬μ€νΈλΌ μκ³ λ¦¬μ¦μ μμμ κ°μ μ μΈμ§ λͺ»νκ³ κ·Έλ₯ μ§λμ³ λ²λ¦°λ€. 그리λνκ² μλνκΈ° λλ¬Έμ λ€μ μλ μμμ κ°μ μ νμ νμ§ λͺ»νκ³ μ§λμ³ λ²λ¦°λ€λ κ²μ΄λ€. μ΄μ λ°λ©΄ λ²¨λ§ ν¬λ μκ³ λ¦¬μ¦μ μ΄μν λ Έλλ₯Ό μ λΆ λ°©λ¬ΈνκΈ° λλ¬Έμ μμμ κ°μ μ μ‘΄μ¬λ₯Ό μ μ μλ€.
λλ‘μ μνμ λμ λ리μ νλ²μ λ΄λλ€. λ Έλλ₯Ό μλ λλ‘λ μνμ νλ μ΄μμ΄ μ‘΄μ¬ν μλ μκΈ° λλ¬Έμ κ°μ₯ μμ κ°λ§ μ‘΄μ¬νλλ‘ μ²λ¦¬νλ€.
μκ±° μ μ²λ¦¬νκ³ λ²¨λ§ ν¬λ μκ³ λ¦¬μ¦ λ리λ μ λ΅ νμ μ λ°μλ€.
π» μ½λ
import sys
input = sys.stdin.readline
# λ²¨λ§ ν¬λ μκ³ λ¦¬μ¦ κ΅¬ν
def bellman_ford(graph, start):
distance= dict()
for node in graph:
distance[node] = 5000 * 10000 # 무ν κ°μΌλ‘ μ΄κΈ°ν
distance[start] = 0
for i in range(len(graph)-1):
for node in graph:
for neighbor in graph[node]:
if distance[neighbor] > distance[node] + graph[node][neighbor]:
distance[neighbor] = distance[node] + graph[node][neighbor]
for node in graph:
for neighbor in graph[node]:
# νλ² λ λμμ λλ μ΄κ² κ°λ₯νλ€λ©΄ μκ° μ€μ
if distance[neighbor] > distance[node] + graph[node][neighbor]:
return 'YES'
return 'NO'
for _ in range(int(input())):
n,m,w = map(int,input().split())
graph = dict()
# νλ§λ€κΈ°
for i in range(1, n+1):
graph[i] = {}
for j in range(m):
s,e,t=map(int,input().split())
# μ΄μ μ μ΄λ―Έ λλ‘κ° μλ€λ©΄
if e in graph[s]:
# μ΅μκ°μΌλ‘ μ
λ°μ΄νΈ
graph[s][e] = min(graph[s][e], t)
else:
graph[s][e] = t
if s in graph[e]:
graph[e][s] = min(graph[e][s], t)
else:
graph[e][s] = t
for k in range(w):
# μν
s,e,t = map(int,input().split())
graph[s][e] = -t
print(bellman_ford(graph, 1))
π μνμ°©μ€
νλ¦° μ΄μ λ 무ν κ°μ λ무 μκ² μ‘μκΈ° λλ¬Έμ΄λ€. μκ° μ΄κ³Όκ° λ μ΄μ λ λͺ¨λ λ Έλμμ κ°μ 체ν¬νκΈ° λλ¬Έμ΄λ€. ν΄λΉ λ¬Έμ (Not Problem)λ μΆλ° λ Έλλ₯Ό λ°λ‘ μ§μ ν΄μ£Όμ§ μμλλ° μμ€μ½λμλ 1λ² λ Έλλ§ νμμνκ³ λ°λ‘ λ΅μ μ μΆνμλ€. μλ μ λΆ μ°κ²°λμ΄ μλ κ·Έλνμ΄κΈ° λλ¬ΈμΈκ±° κ°κΈ΄νλ° μ ννκ² μ¦λͺ νμ§λ λͺ»νκ² λ€. μμ§ λ²¨λ§ ν¬λ μκ³ λ¦¬μ¦μ μλ²½νκ² μ΄ν΄νμ§λ λͺ»νκ² μΌλ μλμ리λ κ°μ΄ μ¨κ±° κ°λ€.
π λ¬Έμ λ§ν¬ μν
'Problem Solving > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1016λ²: μ κ³±γ΄γ΄μ - νμ΄μ¬ (0) | 2022.08.27 |
---|---|
[λ°±μ€] 1041λ²: μ£Όμ¬μ - νμ΄μ¬ (0) | 2022.08.20 |
[λ°±μ€] 9019λ²: DSLR - νμ΄μ¬ (0) | 2022.08.03 |
[λ°±μ€] 1753λ²: μ΅λ¨κ²½λ‘ - νμ΄μ¬ (0) | 2022.07.30 |
[λ°±μ€] 2470λ²: λ μ©μ‘ (0) | 2022.07.28 |