11724: 연결 요소의 개수

ewillwin·2023년 5월 6일
0

Problem Solving (BOJ)

목록 보기
47/230

  • 위의 그림과 같이 graph가 형성되어 있는 경우, 연결 요소가 2개 있다고 함
  • for문을 통해 N만큼의 시작 node들을 순회하면서 그 결과값을 set형식으로 check list에 저장해둠
  • len(check)이 연결 요소의 개수가 됨
import sys
from collections import deque

tmp = list(map(int, sys.stdin.readline()[:-1].split(' ')))
N = tmp[0]; M = tmp[1]
adjacent = [[] for _ in range(N+1)]
for _ in range(M):
    t0, t1 = map(int, sys.stdin.readline()[:-1].split(' '))
    adjacent[t0].append(t1)
    adjacent[t1].append(t0)

check = [] #set으로 이루어진 list
def bfs(start):
    global check
    visit_b[start] = True
    nodes = deque([start]); tmp = []
    while nodes:
        v = nodes.popleft()
        tmp.append(v)
        for i in range(len(adjacent[v])):
            if not visit_b[adjacent[v][i]]:
                visit_b[adjacent[v][i]] = True
                nodes.append(adjacent[v][i])
    if set(tmp) not in check:
        check.append(set(tmp))

for v in range(1, N+1):
    visit_b = [False] * (N+1)
    bfs(v)
print(len(check))
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글