그래프의 표현 예제 - 1
문제 분석
모든 도로의 거리가 1이므로 가중치가 없는 인접 리스트로 이 그래프를 표현할 수 있다.
도시와 개수가 300,000, 도로의 최대 크기가 1,000,000이므로 BFS 탐색을 수행하면 시간 복잡도 안에서 해결할 수 있다.
손으로 풀어보기
인접 리스트로 도시와 도로 데이터의 그래프를 구현한다.
BFS 탐색 알고리즘으로 탐색을 수행하면서 각 도시로 가는 최단 거릿값을 방문 리스트에 저장한다. 최초에 방문하는 도시(
X)는 이동하지 않으므로 방문 리스트에 0을 저장하고, 이후 방문하는 도시는 이전 도시의 방문 리스트값 +1을 방문 리스트에 저장하는 방식으로 이동 거리를 저장한다.탐색 종료 후 방문 리스트에서 값이
K와 같은 도시의 번호를 모두 출력한다.
슈도코드
n(노드 개수) m(에지 개수) k(목표 거리) x(시작 노드)
A(인접 리스트)
ans(정답 리스트)
visit(방문 기록 리스트) # -1로 초기화
BFS:
큐에 시작 노드 삽입
visit 현재 노드 방문 기록 # 거리 저장 형태로 1 증가
while 큐가 비어 있을 때까지:
큐에서 노드 데이터 가져오기
if 현재 노드의 연결 노드 중 미 방문 노드:
visit 리스트값 1 증가
큐에 노드 삽입
for m 반복:
A 인접 리스트에 데이터 저장
BFS(x) 실행
for n 반복:
방문 거리가 k인 노드의 숫자를 정답 리스트에 더하기
정답 리스트 오름차순 정렬 후 순차 출력코드 구현 - 파이썬
코드 구현 - 자바
Last updated