백준 18352 문제 링크: https://www.acmicpc.net/problem/18352
📑 문제 설명
num of vertex: 1~N
num of edge: M
k: 거리
시작점이 주어졌을 때 시작점으로부터 k만큼의 거리 이동으로 도착할 수 있는 도시를 찾고 해당 도시를 오름차순으로 출력하기
--> 동일한 가중치를 갖으면서 방향성이 있는 그래프: Directed Graph
입력
출력
💡 문제 해결 방법
알고리즘: BFS
이유: 시작점으로부터 최단 거리 K만큼 떨어진 도시들을 찾아야 하기 때문에
예외처리
💻 코드
from collections import deque
import sys
# 입력
# n, m, k, s = map(int, input().split())
n, m, k, s = list(map(int, sys.stdin.readline().split()))
graph = {}
for i in range(n+1):
graph[i] = []
for i in range(m):
a, b = list(map(int, sys.stdin.readline().split()))
graph[a].append(b)
# bfs
dist_list = [0 for _ in range(n + 1)]
visited = [0 for _ in range(n+1)]
queue = deque([s])
# queue.append(s)
visited[s] = 1
while (queue):
now = queue.popleft()
for j in graph[now]:
if visited[j] == 0:
queue.append(j)
visited[j] = 1
dist_list[j] = dist_list[now] + 1
check = 0
for i in range(1, n+1):
if dist_list[i] == k:
print(i)
check += 1
if check == 0:
print(-1)
💟 추가적으로 알게 된 점