https://www.acmicpc.net/problem/1647
์ ์ฒด ๊ทธ๋ํ๋ฅผ 2๊ฐ๋ก ๋๋๋๋ฐ ๊ทธ ๋๋ ์ง ๊ทธ๋ํ ์์์๋ ์๋ก ๋ค ์ฐ๊ฒฐ์ด ๋ผ ์์ด์ผ ํ๋ค๋ ์๊ธฐ..... (๊ทผ๋ฐ ๋์ฒด ์์ญ์ด๐ ์๊ธฐ๋ ์ ๋์จ๊ฑฐ์ง???)
๐์ ๊ทผ ๋ฐฉ๋ฒ
- ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ์ต์์ ์ฅ ํธ๋ฆฌ๋ฅผ ํ๋ ๋ง๋ฌ
- ๊ทธ ์ค์์ ๊ฐ์ฅ ๋น์ผ ๊ฐ์ ์ ํ๋ ์์ค๋ค (๊ทธ๋์ผ ์ต์ ๋น์ฉ์ด ๋๋๊น!)
- ๊ทธ๋ฌ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๊ทธ๋ํ๊ฐ 2๊ฐ๋ก ๋ถ๋ฆฌ๋๋ค!
๊ทธ๋ฆฌ๊ณ !
import sys
input = sys.stdin.readline
์ฒ์์ ํ์ด์ฌ์ผ๋ก ์ ์ถํ๋๋ ์๊ฐ์ด๊ณผ๊ฐ ๋์ stdin.readline์ ์ฌ์ฉํ๋๋ ํต๊ณผํจ!
(๋๊ฐ์ ์ฝ๋ pypy๋ก ๋ด๋ฉด ํต๊ณผํจ)
โ 10-07 ์ถ๊ฐ
์ด ๋ฌธ์ ๋ ์๋์๊ณ ํฌ๋ฃจ์ค์นผ ์จ์ ํ์๋ ๋ค๋ฅธ ๋ฌธ์ ์์ง๋ง! (์ฝํ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ ์ ์ฌ๋ฆผ)
๊ฐ์ ์ ๊ฐฏ์๊ฐ E๊ณ , ๋ ธ๋์ ๊ฐฏ์๊ฐ V๋ผ๊ณ ํ ๋ ์๊ฐ๋ณต์ก๋๋ O(E*logV) ๋ผ๊ณ ํ๋ค. ํ๋งํฐ๋ฉด ๋ ๋ ธ๋ฒจ์ ๋ฐ์๋ป...ใ ใ ใ ใ ใ ใ ใ
์๊ฐ๋ณต์ก๋๋ ์ ๊ฒฝ์จ๊ฐ๋ฉด์ ํ์ด์ผ๊ฒ ๋ค๋ ๋ค์ง!๐
๐โ๏ธ ์์ฑํ ์ฝ๋
import sys
def backjoon1647():
input = sys.stdin.readline
#๋ถ๋ชจ๋
ธ๋ ํ์ธ
def find_parent(parent, x):
if parent[x] != x:
parent[x] = find_parent(parent, parent[x])
return parent[x]
#ํฉ์น๊ธฐ
def union_parent(parent, x, y):
x = find_parent(parent, x)
y = find_parent(parent, y)
if x < y:
parent[y] = x
else:
parent[x] = y
#์
๋ ฅ๋ฐ๋ ๋ถ๋ถ
n, m = map(int, input().split())
graph = []
for i in range(m):
a, b, c = map(int, input().split())
graph.append( (c, a, b) ) #cost๋ก ์ ๋ ฌํ๋ ค๊ณ
#๋ถ๋ชจ๋
ธ๋ ์์ฑ ํ ์๊ธฐ์์ ์ผ๋ก ์ค์
parent = [0] * (n+1)
for i in range(n+1):
parent[i] = i
graph.sort() #๋น์ฉ ์์๋ก ์ ๋ ฌ
lastCost = 0 #๋ง์ง๋ง ๊ฐ์ (๋์ค์ ๋นผ๋ ค๊ณ )
result = 0
for c,a,b in graph:
if find_parent(parent, a) != find_parent(parent, b):
union_parent(parent, a, b)
result += c
lastCost = c
answer = result - lastCost
print(answer)
'๐๊ณต๋ถ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv.2] 2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ๋นํธ (0) | 2021.05.18 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ๊ธฐ์ง๊ตญ ์ค์น (0) | 2021.04.28 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ์ซ์ ๊ฒ์ (0) | 2021.04.27 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ํ์ ํฐํธ๋ฆฌ๊ธฐ (0) | 2021.04.20 |
[๋ฐฑ์ค] 14889๋ฒ ์คํํธ์ ๋งํฌ (0) | 2021.01.07 |
๋๊ธ