π μκ°κ·ΈλΌμ΄λ
λ°±μ€ Class4 Gold4
solved_ac[Class4] μκ°κ·ΈλΌμ΄λ
λ¬Έμ
μμμ΄λ μμ¦ κ°μ₯ μΈκΈ°κ° μλ κ²μ μκ°κ·ΈλΌμ΄λλ₯Ό μ¦κΈ°κ³ μλ€. μκ°κ·ΈλΌμ΄λλ μ¬λ¬ μ§μμ€ νλμ μ§μμ λνμ°μ νκ³ λννμ¬, κ·Έ μ§μμ λ¨μ΄μ Έ μλ μμ΄ν λ€μ μ΄μ©ν΄ μλ°μ΄λ²μ νλ κ²μμ΄λ€. μκ°κ·ΈλΌμ΄λμμ 1λ±μ νλ©΄ 보μμΌλ‘ μΉν¨μ μ£Όλλ°, μμμ΄λ λ¨ νλ²λ μΉν¨μ λ¨Ήμ μκ° μμλ€. μμ μ΄ μΉν¨μ λͺ» λ¨Ήλ μ΄μ λ μ€λ ₯ λλ¬Έμ΄ μλλΌ μμ΄ν μ΄μ΄ μμ΄μλΌκ³ μκ°ν μμμ΄λ λνμ°μμ λ¨μ΄μ§ λ κ° μ§μμ μμ΄ν λ€μ΄ λͺ κ° μλμ§ μλ €μ£Όλ νλ‘κ·Έλ¨μ κ°λ°μ νμμ§λ§ μ΄λλ‘ λνν΄μΌ μμ μ μμ λ²μ λ΄μμ κ°μ₯ λ§μ μμ΄ν μ μ»μ μ μλμ§ μ μ μμλ€.
κ° μ§μμ μΌμ ν κΈΈμ΄ l (1 β€ l β€ 15)μ κΈΈλ‘ λ€λ₯Έ μ§μκ³Ό μ°κ²°λμ΄ μκ³ μ΄ κΈΈμ μλ°©ν₯ ν΅νμ΄ κ°λ₯νλ€. μμμ΄λ λνν μ§μμ μ€μ¬μΌλ‘ κ±°λ¦¬κ° μμ λ²μ m (1 β€ m β€ 15) μ΄λ΄μ λͺ¨λ μ§μμ μμ΄ν μ μ΅λ κ°λ₯νλ€κ³ ν λ, μμμ΄κ° μ»μ μ μλ μμ΄ν μ μ΅λ κ°μλ₯Ό μλ €μ£Όμ.
μ£Όμ΄μ§ νλκ° μμ κ·Έλ¦Όκ³Ό κ°κ³ , μμμ΄μ μμλ²μκ° 4λΌκ³ νμ. ( μ λ°μ μ«μλ μ§μ λ²νΈ, μμ μ«μλ μμ΄ν μ, μ μμ μ«μλ 거리λ₯Ό μλ―Ένλ€) μμμ΄κ° 2λ² μ§μμ λ¨μ΄μ§κ² λλ©΄ 1λ²,2λ²(μκΈ° μ§μ), 3λ², 5λ² μ§μμ λλ¬ν μ μλ€. (4λ² μ§μμ κ²½μ° κ°λ κ±°λ¦¬κ° 3 + 5 = 8 > 4(μμλ²μ) μ΄λ―λ‘ 4λ² μ§μμ μμ΄ν μ μ»μ μ μλ€.) μ΄λ κ² λλ©΄ μμμ΄λ 23κ°μ μμ΄ν μ μ»μ μ μκ³ , μ΄λ μμ νλμμ μμμ΄κ° μ»μ μ μλ μμ΄ν μ μ΅λ κ°μμ΄λ€.
μ λ ₯
첫째 μ€μλ μ§μμ κ°μ n (1 β€ n β€ 100)κ³Ό μμμ΄μ μμλ²μ m (1 β€ m β€ 15), κΈΈμ κ°μ r (1 β€ r β€ 100)μ΄ μ£Όμ΄μ§λ€.
λμ§Έ μ€μλ nκ°μ μ«μκ° μ°¨λ‘λλ‘ κ° κ΅¬μμ μλ μμ΄ν μ μ t (1 β€ t β€ 30)λ₯Ό μλ €μ€λ€.
μΈ λ²μ§Έ μ€λΆν° r+2λ²μ§Έ μ€ κΉμ§ κΈΈ μ λμ μ‘΄μ¬νλ μ§μμ λ²νΈ a, b, κ·Έλ¦¬κ³ κΈΈμ κΈΈμ΄ l (1 β€ l β€ 15)κ° μ£Όμ΄μ§λ€.
μΆλ ₯
μμμ΄κ° μ»μ μ μλ μ΅λ μμ΄ν κ°μλ₯Ό μΆλ ₯νλ€.
μμ μ λ ₯ 1
5 5 4
5 7 8 2 3
1 4 5
5 2 4
3 2 3
1 2 3
μμ μΆλ ₯ 1
23
π μκ³ λ¦¬μ¦
μ΄ λ¬Έμ μ ν΅μ¬μ κ°ννλ©΄ λ€μκ³Ό κ°λ€.
- Weightκ° μ‘΄μ¬νλ κ·Έλνμ΄λ©° λ¬Έμ 쑰건μ μ νμ΄ μλ€.
- κ° λ Έλμ Valueκ° μ‘΄μ¬νλ€.
- λͺ¨λ λ Έλμμ μΆλ°νμ¬ λͺ¨λ λ Έλλ‘ λμ°©νλ κ°μ₯ λΉ λ₯Έ κ²½λ‘λ₯Ό ꡬν΄μΌ νλ€.
μ¬κΈ°μ μ μΌ μ€μν λΆλΆμ λ§μ§λ§ 쑰건μ΄λ€. 3λ²μ Baseλ‘ κΉμλκ³ 1λ²κ³Ό 2λ² μ‘°κ±΄μ μΉμ΄μΌ νλ€.
κ·Έλ λ€λ©΄ 3λ² μ‘°κ±΄μ λΆν©νλ μκ³ λ¦¬μ¦μ 무μμΌκΉ? νλ‘μ΄λ λ¬Έμ μμ μ°λ¦¬λ λ€μκ³Ό κ°μ μ§μμ μ»μλ€.
[νλ‘μ΄λ μμ¬ μκ³ λ¦¬μ¦μ Weightκ° μλ κ·Έλνμμ λͺ¨λ λ Έλμμ λͺ¨λ λ Έλλ‘ κ°λ μ΅μ λΉμ©μ ꡬν λ μ¬μ©νλ€.]
νΉμ¬, 3λ² μ‘°κ±΄μ΄ μ νμνμ§ μ΄ν΄κ° μ κ°μλ λΆλ€μ μνμ¬ μ€λͺ μ νμλ©΄ μμμ΄κ° μμν μ μλ λ²μλ νμ μ μ΄λ€.
λ°λΌμ μ΅λν λ§μ μμ΄ν μ μ€κΈ° μν΄μλ κ° μ§μμ μ΅λ¨ κ²½λ‘λ‘ νμν΄μΌ μ νλ μμ λ²μ λ΄μμ μ΅λν μ΄λμ λ³Ό μ μκΈ° λλ¬Έμ΄λ€.
π μ€κ³
- νλ‘μ΄λ μμ¬ β‘οΈ λͺ¨λ λ Έλμμ λͺ¨λ λ Έλλ‘ κ°λ μ΅μ λΉμ© ν μ΄λΈ
- κ° λ Έλμμ μΆλ°νμμ λ, [μ΅μ λΉμ© β€ μμ λ²μ]
- 2λ² μ‘°κ±΄μ λΆν©νλ item κ°μ μ μ₯
- 3λ² μ‘°κ±΄μμ μ μΌ ν° item κ°μ μΆλ ₯
π¨π»βπ» CODE
INF = int(1e9)
region, search, road = map(int,input().split())
item = list(map(int,input().split()))
graph = [[INF]*region for _ in range(region)]
for i in range(road):
start,end,distance = map(int,input().split())
graph[start-1][end-1] = distance
graph[end-1][start-1] = distance
for i in range(region):
graph[i][i] = 0
# νλ‘μ΄λ μμ¬ μκ³ λ¦¬μ¦
for i in range(region):
for j in range(region):
for k in range(region):
if graph[j][k] > graph[j][i] + graph[i][k]:
graph[j][k] = graph[j][i] + graph[i][k]
lst_answer = []
for i in range(region):
count = 0
for j in range(region):
if graph[i][j] <= search:
count += item[j]
lst_answer.append(count)
print(max(lst_answer))