๐Ÿค–/๋ฐฑ์ค€

๋ฐฑ์ค€ 2606: ๋ฐ”์ด๋Ÿฌ์Šค (Python)

sssbin 2022. 1. 29. 14:30

 

https://www.acmicpc.net/problem/2606

 

2606๋ฒˆ: ๋ฐ”์ด๋Ÿฌ์Šค

์ฒซ์งธ ์ค„์—๋Š” ์ปดํ“จํ„ฐ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ปดํ“จํ„ฐ์˜ ์ˆ˜๋Š” 100 ์ดํ•˜์ด๊ณ  ๊ฐ ์ปดํ“จํ„ฐ์—๋Š” 1๋ฒˆ ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ปดํ“จํ„ฐ ์Œ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด

www.acmicpc.net

 

bfs ๋จผ์ € ํ’€๊ณ  dfs ํ’€์—ˆ๋‹ค

 

# bfs

from collections import deque

n = int(input())
m = int(input())
com = [[] for _ in range(n+1)]

for i in range(m):
    data = input().split()
    com[int(data[0])].append(int(data[1]))
    com[int(data[1])].append(int(data[0]))

def bfs(v):
    count = 0
    visited = [False] * (n+1)
    queue = deque([v])
    visited[v] = True

    while queue:
        q = queue.popleft()
        visited[q] = True
        count += 1

        for i in com[q]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True

    return count-1

print(bfs(1))
# dfs

n = int(input())
m = int(input())
com = [[] for _ in range(n+1)]

for i in range(m):
    d1, d2 = map(int, input().split())
    com[d1].append(d2)
    com[d2].append(d1)

visited = [0] * (n+1)

def dfs(v):
    visited[v] = 1

    for i in com[v]:
        if visited[i] == 0:
            dfs(i)

dfs(1)
print(sum(visited)-1)

 

bfs -> dfs ํ’€๋ฉด์„œ ์ฝ”๋“œ๊ฐ€ ์ข€๋” ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  ์‹œ๊ฐ„์ด๋ž‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์•ˆ์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๊ฒŒ ๋จ.

 

์‹œํ–‰์ฐฉ์˜ค···