알고리즘

[백준, 9372번] 상근이의 여행

hminor 2023. 8. 21. 10:14

풀이

  • start를 이용해서 연결되어 있는 국가가 하나인 경우를 찾고자 했음
    • 굳이 안해도 되는 것 같음
  • 아래 코드는 일반적인 방문 체크를 통해 풀이하는 코드
  • 특징으로는 bfs를 통해 풀었기에 q에 추가할 때 방문 체크를 하여
    • 같은 나라가 q에 똑같이 들어있지 않도록 하기!

 

import sys
input = sys.stdin.readline
from collections import deque
for _ in range(int(input())):
    n,m = map(int,input().split())
    _dic = {i:[] for i in range(1,n+1)}
    result = 0
    for _ in range(m):
        a,b = map(int,input().split())
        _dic[a].append(b)
        _dic[b].append(a)
    start = min(_dic, key=lambda x: len(_dic[x]))
    visit = [0]*(n+1) # 방문 국가 체크
    q = deque([start])
    visit[start] = 1
    while q:
        s = q.popleft() # bfs 사용
        for i in _dic[s]:
            if not visit[i]:
                visit[i] = 1
                result += 1
                q.append(i)
    print(result)

'알고리즘' 카테고리의 다른 글

[백준, 10026번] 적록색약  (0) 2023.08.23
[백준, 13116번] 30번  (0) 2023.08.21
[백준, 4963번] 섬의 개수  (0) 2023.08.20
[백준, 1325번] 효율적인 해킹  (0) 2023.08.18
[백준, 11724번] 연결 요소의 개수  (0) 2023.08.15