https://www.acmicpc.net/problem/14938
14938λ²: μκ°κ·ΈλΌμ΄λ
μμμ΄λ μμ¦ κ°μ₯ μΈκΈ°κ° μλ κ²μ μκ°κ·ΈλΌμ΄λλ₯Ό μ¦κΈ°κ³ μλ€. μκ°κ·ΈλΌμ΄λλ μ¬λ¬ μ§μμ€ νλμ μ§μμ λνμ°μ νκ³ λννμ¬, κ·Έ μ§μμ λ¨μ΄μ Έ μλ μμ΄ν λ€μ μ΄μ©ν΄ μλ°μ΄λ²μ
www.acmicpc.net
μ‘°κ±΄λ§ μ μκ°νλ©΄ λλ μ°©ν λ¬Έμ .
μμ΄λμ΄
1. λ€μ΅μ€νΈλΌ
- μΆλ°μ§λ‘ λΆν° μ΅λ¨κ±°λ¦¬λ₯Ό κ³μ°ν΄μ μμ λ²μμμ λ€μ΄κ°λμ§ νμΈνλ©΄ λλ€.
- μμ λ²μμμ λ€μ΄μ€λ©΄ μμ΄ν κ°μλ₯Ό λν΄μ£Όλ©΄ λλ€.
- 1 ~ nκΉμ§ forλ¬ΈμΌλ‘ μΆλ°μ§λ₯Ό λ°κΎΈλ©΄μ νμνλ©΄ λλ€.
2. νλ‘μ΄λ μμ
- μ§μμ κ°μ(100)κ° μ μΌλ―λ‘ νλ‘μ΄λ μμ λ‘ νμ΄λ μκ°μ΄κ³Όμ κ±Έλ¦¬μ§ μλλ€.
μ 체 μ½λ
λ€μ΅μ€νΈλΌ
import heapq
import sys
INF = int(1e9)
n, m, r = map(int, input().split())
items = [0] + [int(x) for x in sys.stdin.readline().split()]
graph = [[] for _ in range(n + 1)]
for _ in range(r):
a, b, l = map(int, sys.stdin.readline().split())
graph[a].append([b, l])
graph[b].append([a, l])
def dijkstra(start):
que = []
heapq.heappush(que, (0, start))
D[start] = 0
while que:
dist, now = heapq.heappop(que)
if D[now] < dist:
continue
for i in graph[now]:
cost = dist + i[1]
if cost < D[i[0]]:
D[i[0]] = cost
heapq.heappush(que, (cost, i[0]))
ans = 0
for i in range(1, n + 1):
D = [INF] * (n + 1)
dijkstra(i)
tmp = 0
for d in range(1, n + 1):
if m >= D[d]:
tmp += items[d]
ans = max(ans, tmp)
print(ans)
νλ‘μ΄λ μμ
import sys
INF = int(1e9)
n, m, r = map(int, input().split())
items = [0] + [int(x) for x in sys.stdin.readline().split()]
graph = [[INF] * (n + 1) for _ in range(n + 1)]
for _ in range(r):
a, b, l = map(int, sys.stdin.readline().split())
graph[a][b] = l
graph[b][a] = l
for i in range(n + 1):
graph[i][i] = 0
for k in range(1, n + 1):
for i in range(1, n + 1):
for j in range(1, n + 1):
graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j])
ans = 0
for i in range(1, n + 1):
tmp = 0
for j in range(1, n + 1):
if graph[i][j] <= m:
tmp += items[j]
ans = max(ans, tmp)
print(ans)
μ½λ μ€λͺ
λ€μ΅μ€νΈλΌ
ans = 0
for i in range(1, n + 1):
D = [INF] * (n + 1)
dijkstra(i)
tmp = 0
for d in range(1, n + 1):
if m >= D[d]:
tmp += items[d]
ans = max(ans, tmp)
print(ans)
forλ¬Έμ μ¬μ©ν΄μ κ° μΆλ°μ§ λ§λ€ μΌλ§λ μμ΄ν μ λͺ¨μ μ μλμ§ κ³μ°νλ€.
μ μ₯ν μ΅λκ°μ μΆλ ₯ν΄μ£Όλ©΄ λλ€.
νλ‘μ΄λ μμ
ans = 0
for i in range(1, n + 1):
tmp = 0
for j in range(1, n + 1):
if graph[i][j] <= m:
tmp += items[j]
ans = max(ans, tmp)
μμ λ°©μμ λκ°λ€.
'𧩠Problem Solving > [λ°±μ€]' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 11559 puyopuyo (νμ΄μ¬ python) (0) | 2023.03.26 |
---|---|
[λ°±μ€] 2583 μμ ꡬνκΈ°(python νμ΄μ¬) (0) | 2023.03.16 |
[λ°±μ€]11660 κ΅¬κ° ν© κ΅¬νκΈ° 5 (python νμ΄μ¬) (0) | 2022.08.19 |
[λ°±μ€] 10942 ν°λ¦°λ둬? (python νμ΄μ¬) (0) | 2022.08.17 |
[λ°±μ€] 1647 λμ λΆν κ³ν (python νμ΄μ¬) (0) | 2022.08.01 |