๋ฐฑ์ค 2606๋ฒ ํ์ด์ฌ
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
com = [[] for _ in range(n + 1)]
# ์ธ๋ฑ์ค : ๋
ธ๋, ํด๋น ๋
ธ๋์ ์ฐ๊ฒฐ๋์ด ์๋ ๋
ธ๋์ ์ ๋ณด๋ฅผ ์
๋ ฅ
visited = [False] * (n+1) # ์ธ๋ฑ์ค : ๋
ธ๋, ํ๋ฒ ๋ฐฉ๋ฌธํ๋ฉด True ๋ณํ์ฌ ๋ฐฉ๋ฌธ๊ธฐ๋ก ํ์ธ
for i in range(m):
com1, com2 = map(int, input().split())
com[com1].append(com2)
com[com2].append(com1) # ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๊ฒ์ ์
๋ ฅ
count = 0
def dfs(w):
global count
visited[w] = True # ๋ฐฉ๋ฌธํจ์ ์ฒดํฌ
for n in com[w]:
if not visited[n]:
# ๋ฐฉ๋ฌธ๊ธฐ๋ก์ด ์์ผ๋ฉด ๊ทธ ๋
ธ๋์ ์ฐ๊ฒฐ๋์ด์๋ ๋
ธ๋๋ฅผ ์ฐพ๋๋ค.
count += 1
dfs(n)
# ๋ฐฉ๋ฌธ๊ธฐ๋ก์ด ์์ด๋ฉด ๋ค์ ์ฐ๊ฒฐ ๋
ธ๋๋ก ์ด๋
dfs(1) # ์ฒ์ 1๋ฒ ๋
ธ๋๋ฅผ ์์์ผ๋ก ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค์ ๊ฐฏ์๋ฅผ ์ฐพ๋๋ค.
print(count)
DFS ๋ฌธ์ ์ฒ์ ํ์ด๋ณด์์ต๋๋ค... ์ด๊ฑฐ ๊ฝค๋ ์ด๋ ต๋ค์... ์ฌ๋ฌ ์ฐธ๊ณ ์๋ฃ๋ฅผ ํ์ด๋ณด๊ณ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
์์ฆ ์๊ณ ๋ฆฌ์ฆ ์ค๋ ฅ์ด ํฅ์๋ ์ค ์์์๋๋ฐ..dp๋ ๊ทธ๋ ๊ณ DFS๋ฌธ์ ๋ ๊ทธ๋ ๊ณ ์ ๋ชปํธ๋๊ฒ ํ๊ฐ๋...๋์ฑ ๋ง์ด ํ์ด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.