[BOJ] Q18352 특정한 거리의 도시 찾기

Question

Language: Python

Difficulty: Silver 2

전형적인 dfs/bfs 문제로 시작 정점으로 부터 bfs, dfs를 수행하면서 distance 배열에 각각의 정점까지의 거리를 저장하였다.

이후, distance 배열을 참조하여 특정 거리 k를 만족하는 정점을 출력하도록 하고, 거리가 k인 정점이 없는 경우는 -1를 출력하도록 한다.

Solution

from collections import deque

v,e,k,start_node=map(int,input().split())
graph=[[] for _ in range(v+1)]
for _ in range(e):
    v1,v2=map(int,input().split())
    graph[v1].append(v2)
distance=[-1] * (v+1)
queue=deque()

distance[start_node]=0
queue.append(start_node)

while queue:
    vertex=queue.popleft()
    for adj_vertex in graph[vertex]:
      if distance[adj_vertex]==-1:
        distance[adj_vertex]=distance[vertex]+1
        queue.append(adj_vertex)
        
count=0
for i in range(1,v+1):
  if distance[i] == k:
    count+=1
    print(i)
    
if count==0:
    print(-1)

댓글남기기