[๋ฐฑ์ค/python] 11724๋ฒ : ์ฐ๊ฒฐ ์์์ ๊ฐ์
2021. 8. 23. 18:29
๋ฌธ์
๋ฐฉํฅ ์๋ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๊ฒฐ ์์ (Connected Component)์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฐ์ ์ ์ ๋์ u์ v๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ์ ๊ฐ์ ์ ํ ๋ฒ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐ๊ฒฐ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ๋ต
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
dic = {n:[] for n in range(1, N+1)}
for _ in range(M):
u, v = map(int, input().split())
dic[u].append(v)
dic[v].append(u)
visited = []
def dfs(n):
stack = [n]
while stack:
num = stack.pop()
if num not in visited:
visited.append(num)
stack.extend(dic[num])
return 1
answer = 0
for i in range(1, N+1):
if len(visited) == N:
break
if i not in visited:
answer += dfs(i)
print(answer)
728x90
'๐์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/python] 9935๋ฒ : ๋ฌธ์์ด ํญ๋ฐ (0) | 2021.08.26 |
---|---|
[๋ฐฑ์ค/python] 12851๋ฒ : ์จ๋ฐ๊ผญ์ง 2 (0) | 2021.08.25 |
[๋ฐฑ์ค/python] 1012๋ฒ : ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2021.08.23 |
[๋ฐฑ์ค/python] 14500๋ฒ : ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2021.08.19 |
[๋ฐฑ์ค/python] 17219๋ฒ : ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2021.08.19 |