본문 바로가기

카테고리 없음

[코딩테스트] 기본반A 14일차

  • 문제 이름: 특정 거리의 도시 찾기(https://www.acmicpc.net/problem/18352)
  • 문제 유형: 그래프 이론, 그래프 탐색, 너비 우선 탐색, 최단 경로, 데이크스트라
  • 난이도: S2
  • 언어: Python
  • 문제 탐색하기
  • 시간 복잡도
  • 코드 설계하기
  • 시도 회차 수정사항
  • 정답 코드
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)