<๋ฌธ์ ๋งํฌ>
https://www.acmicpc.net/problem/1368
1368๋ฒ: ๋ฌผ๋๊ธฐ
์ฒซ ์ค์๋ ๋ ผ์ ์ N(1 ≤ N ≤ 300)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ i๋ฒ์งธ ๋ ผ์ ์ฐ๋ฌผ์ ํ ๋ ๋๋ ๋น์ฉ Wi(1 ≤ Wi ≤ 100,000)๊ฐ ์์๋๋ก ๋ค์ด์จ๋ค. ๋ค์ N๊ฐ์ ์ค์ ๋ํด์๋ ๊ฐ ์ค์ N๊ฐ์ ์๊ฐ ๋ค์ด
www.acmicpc.net
<ํ์ด ์ ๋ต>
- ๋ ผ ์ฐ๊ฒฐ ๋ถ๋ถ์ด๋ ๋ฌธ์ ์ ๋ณด๋ฅผ ๋ณด๋ฉด ๋ญ๊ฐ ๊ทธ๋ํ๋ ์ต์์ ์ฅํธ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผํ ๊ฒ ๊ฐ์๋ฐ '์ฐ๋ฌผ ํ๊ธฐ'๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง๊ฐ ๊ด๊ฑด์ด๋ค.
- ๊ฒฐ๋ก ์ ์ผ๋ก ์ฐ๋ฌผ์ ๋ํ๋ด๋ ๊ฐ์์ ๋ ธ๋ N+1๋ฒ ๋ ธ๋๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋ ธ๋์ ๊ฐ์ ๋น์ฉ์ ์ฐ๋ฌผ ํ๋ ๋น์ฉ์ผ๋ก ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
- ๋๋จธ์ง๋ ์ผ๋ฐ์ ์ธ ์ต์์ ์ฅํธ๋ฆฌ ๋ฌธ์ ๋ ๋น์ทํ๋ค.
- ๊ฐ์์ ๋ ธ๋๋ฅผ ๋ง๋ค์ด์ค์ ์ ๋ ฅ๊ฐ์ ์ฒ๋ฆฌํ๋ ์ ๊ทผ์ด๋ ๋ฐ์์ด ์ค์ํ ๋ฌธ์ ๋ค.
- ์ฐธ๊ณ ๋ก (23743 - ๋ฐฉํ์ถ) ๋ฌธ์ ๋ ์ด์ ๋งค์ฐ ์ ์ฌํ๋ ๊ฐ์ด ํ์ด๋ณด์
<์ ๋ต ์ฝ๋>
import sys, os, io, atexit
input = lambda: sys.stdin.readline().rstrip('\r\n')
stdout = io.BytesIO()
sys.stdout.write = lambda s: stdout.write(s.encode("ascii"))
atexit.register(lambda: os.write(1, stdout.getvalue()))
# 220927 1368 ๋ฌผ๋๊ธฐ
# ์ ๋ต์ฝ๋
# find ํจ์ (๊ฒฝ๋ก ์์ถ)
def find(x):
if parent[x] != x:
parent[x] = find(parent[x])
return parent[x]
# ์ ๋์จ ํจ์
def merge(x, y):
x = find(x)
y = find(y)
if x < y:
parent[y] = x
else:
parent[x] = y
return
# N: ๋
ผ์ ์
N = int(input())
# parent: ๋ถ๋ชจ ๋
ธ๋ (N + 1๊น์ง)
parent = [i for i in range(N + 2)]
# graph: ์ธ์ ํ๋ ฌใน ๋ํ๋ธ ๊ทธ๋ํ
graph = []
# ์ฐ๋ฌผ์ ๋ํ๋ด๋ ๊ฐ์์ ๋
ธ๋(N + 1)์ ๋ง๋ค์ด์ ์ฐ๋ฌผ ๋น์ฉ์ ๊ฐ์ ๋น์ฉ์ผ๋ก ํด์ ๊ทธ๋ํ์ ๋ฃ์ด์ค๋ค.
for i in range(1, N + 1):
graph.append((int(input()), N + 1, i))
# arr: ๊ฐ์ ๊ฐ ์ฐ๊ฒฐ ์ ๋ณด
arr = [list(map(int, input().split())) for _ in range(N)]
for r in range(N - 1):
for c in range(r + 1, N):
graph.append((arr[r][c], r + 1, c + 1))
# ๊ฐ์ ๋น์ฉ ์ ๋ ฌ
graph.sort()
# ans: ๋ฌผ์ ๋๋๋ฐ ํ์ํ ์ต์๋น์ฉ
ans = 0
# ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ก ๋น์ฉ ๊ตฌํ๊ธฐ
for i in range(len(graph)):
cost, node1, node2 = graph[i]
if find(node1) != find(node2):
merge(node1, node2)
ans += cost
# ์ ๋ต ์ถ๋ ฅ
print(ans)
'โญ Problem_Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11559 Puyo Puyo (Python/ํ์ด์ฌ) (0) | 2022.11.10 |
---|---|
[๋ฐฑ์ค] 1253 ์ข๋ค (Python/ํ์ด์ฌ) (1) | 2022.11.08 |
[๋ฐฑ์ค] 2252 ์ค ์ธ์ฐ๊ธฐ (Python/ํ์ด์ฌ) (0) | 2022.10.15 |
[๋ฐฑ์ค] 17471 ๊ฒ๋ฆฌ๋งจ๋๋ง (Python/ํ์ด์ฌ) (0) | 2022.10.14 |
[๋ฐฑ์ค] 16236 ์๊ธฐ์์ด (Python/ํ์ด์ฌ) (0) | 2022.10.13 |
๋๊ธ