πŸ—οΈ Algorithm/🟩 λ°±μ€€

🟩 [λ°±μ€€] [Python] 24444번_μ•Œκ³ λ¦¬μ¦˜ μˆ˜μ—… - λ„ˆλΉ„ μš°μ„  탐색 1

Dbswnstjd 2022. 12. 16. 23:43

문제

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

 

24444번: μ•Œκ³ λ¦¬μ¦˜ μˆ˜μ—… - λ„ˆλΉ„ μš°μ„  탐색 1

첫째 쀄에 μ •μ μ˜ 수 N (5 ≤ N ≤ 100,000), κ°„μ„ μ˜ 수 M (1 ≤ M ≤ 200,000), μ‹œμž‘ 정점 R (1 ≤ R ≤ N)이 μ£Όμ–΄μ§„λ‹€. λ‹€μŒ M개 쀄에 κ°„μ„  정보 u vκ°€ μ£Όμ–΄μ§€λ©° 정점 u와 정점 v의 κ°€μ€‘μΉ˜ 1인 μ–‘λ°©

www.acmicpc.net

풀이

# λ°±μ€€ 24444번 문제 - μ•Œκ³ λ¦¬μ¦˜ μˆ˜μ—… - λ„ˆλΉ„ μš°μ„  탐색 1
from collections import deque
import sys
input = sys.stdin.readline
n, m, r = map(int, input().split())
graph = [[] for _ in range(n+1)]
visited = [0] * (n+1)
for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

def bfs(n):
    q = deque()
    q.append(n)
    visited[n] = 1
    count = 1
    while q:
        v = q.popleft()
        graph[v].sort()
        for i in graph[v]:
            if not visited[i]:
                count += 1
                visited[i] = count
                q.append(i)

bfs(r)
for i in visited[1:]:
    print(i)

이전에 ν’€μ—ˆλ˜ λ„ˆλΉ„ μš°μ„  탐색 2와 같은 μœ ν˜•μ΄λΌ μ‰½κ²Œ ν’€ 수 μžˆμ—ˆλ‹€. 

sysλ₯Ό μ‚¬μš©ν•˜μ—¬μ•Ό μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚˜μ§€ μ•Šκ³  해결이 κ°€λŠ₯ν•˜λ‹€.