Skip to content

Commit 3a64756

Browse files
committed
[BOJ] #18352. 특정 거리의 도시 찾기 / 실버2 / 70분 / 성공
1 parent af7bddc commit 3a64756

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import sys
2+
from collections import deque
3+
4+
input = sys.stdin.readline
5+
6+
def bfs(start):
7+
global k
8+
queue = deque([start])
9+
visited[start] = 0 # 시작 노드의 거리를 0으로 설정
10+
while queue:
11+
node = queue.popleft()
12+
for connected_node in graph[node]: # 해당 노드와 연결된 노드 순회
13+
if visited[connected_node] == -1: # 방문하지 않은 노드일 경우
14+
queue.append(connected_node) # 큐에 추가하고
15+
visited[connected_node] = visited[node] + 1 # 거리를 1 증가
16+
17+
# 연결된 노드의 거리가 k와 같다면 answer 리스트에 추가
18+
if visited[connected_node] == k:
19+
answer.append(connected_node)
20+
return answer
21+
22+
# 도시 개수 n, 도로 개수 m, 거리 정보 k, 출발도시 번호 x
23+
n, m, k, x = map(int, input().strip().split())
24+
visited = [-1 for _ in range(n + 1)] # 모든 노드를 -1로 초기화 (방문하지 않은 상태)
25+
graph = [[] for _ in range(n + 1)]
26+
answer = []
27+
28+
# 그래프 연결
29+
for _ in range(m):
30+
u, v = map(int, input().strip().split())
31+
graph[u].append(v)
32+
33+
# BFS 호출 -> 출발도시 번호 x로 시작
34+
answer = bfs(x)
35+
if not answer:
36+
print(-1)
37+
else:
38+
answer.sort()
39+
for u in answer:
40+
print(u)

0 commit comments

Comments
 (0)