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
import sys
from collections import deque
n,m,r=map(int,sys.stdin.readline().split())
graph=[[] for _ in range(n+1)]
visited=[0 for _ in range(n+1)]
def bfs(start):
cnt=1
visited[start]=cnt
que=deque([start])
while que:
now=que.popleft()
for i in graph[now]:
if visited[i]==0:
cnt+=1
visited[i]=cnt
que.append(i)
for i in range(m):
a,b=map(int,sys.stdin.readline().split())
graph[a].append(b)
graph[b].append(a)
for i in range(1,n+1):
graph[i].sort()
bfs(r)
for i in range(1,n+1):
print(visited[i])
전형적인 BFS를 사용하여 풀수 있는 문제였다.
'알고리즘||코딩테스트 > 백준' 카테고리의 다른 글
[백준 15650번] N과 M(2) - Python (0) | 2023.06.28 |
---|---|
[백준 15649번] N과 M(1) - Python (0) | 2023.06.27 |
[백준 24479번] 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2023.06.26 |
[백준 9934번] 완전 이진 트리 (Silver1) (0) | 2023.06.24 |
1991번 트리 순회(Silver1) (0) | 2023.06.23 |