[ 2023-07-17 ๐Ÿคฝ๐Ÿพโ€โ™‚๏ธTIL ]

Burkeyยท2023๋…„ 7์›” 17์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
121/157

๋ฐฑ์ค€ 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๋ฌธ์ œ๋„ ๊ทธ๋ ‡๊ณ  ์ž˜ ๋ชปํ‘ธ๋Š”๊ฒŒ ํ•œ๊ฐ€๋“...๋”์šฑ ๋งŽ์ด ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€