ํ’€์ด


์ •์  a ์™€ b ์— ๋Œ€ํ•œ m ๊ฐœ์˜ ๊ฐ„์„  ์ •๋ณด๋ฅผ ์ •์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›๊ณ  ์ด๋ฅผ ์ธ์ ‘ํ–‰๋ ฌ๋กœ ์ €์žฅํ•ด์ค€๋‹ค.

n ๊ฐœ์˜ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•˜์—ฌ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ visited ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ ์–ธํ•œ ๋’ค 1๋ฒˆ ์ปดํ“จํ„ฐ๋ฅผ ์‹œ์ž‘์œผ๋กœ BFS ๋ฅผ ํ†ตํ•ด ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.

1๋ฒˆ ์ปดํ“จํ„ฐ์™€ ์ธ์ ‘ํ•œ ๋ชจ๋“  ์ปดํ“จํ„ฐ์— ๊ด€ํ•˜์—ฌ BFS ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ans ๋ฆฌ์ŠคํŠธ์— ์ธ์ ‘ํ•œ ์ปดํ“จํ„ฐ๋“ค์„ ๋ชจ๋‘ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ดํ›„ ์ถœ๋ ฅ์กฐ๊ฑด์— ๋งž์ถฐ์„œ 1๊ณผ ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด๋œ๋‹ค.

์†Œ์Šค์ฝ”๋“œ


# ๋ฐ”์ด๋Ÿฌ์Šค
from collections import deque
import sys
input = sys.stdin.readline
 
def bfs(v):
    ans = []
    q = deque()
    q.append(v)
    visited[v] = 1
    while q:
        v = q.popleft()
        ans.append(v)
        for i in range(1, n+1):
            if visited[i] == 0 and graph[v][i] == 1:
                q.append(i)
                visited[i] = 1
    return ans
 
n = int(input())
m = int(input())
 
graph = [[0] * (n+1) for _ in range(n+1)]
visited = [0] * (n+1)
 
for _ in range(m):
    a, b = map(int, input().split())
    graph[a][b] = graph[b][a] = 1
 
ans = bfs(1)
ans.remove(1)
print(len(ans))

References