[白俊]18352号特定の街を探す都市


🙂 質問する


一部の国では1番からN番までの都市とM本の一方通行道路が存在している.すべての道路の距離は1です.
このとき、ある都市Xから、到達可能なすべての都市において、最短距離Kのすべての都市の番号を出力するプログラムが作成される.また、出発都市Xから出発都市Xまでの最短距離は常に0であると仮定する.
例えば、N=4、K=2、X=1の場合、図形は以下のように組織されていると仮定する.

このとき1番都市から行ける都市のうち、最短距離が2の都市は4番都市しかありません.2番と3番の都市については最短距離が1なので出力しません.

😉 に答える


=[0]*(n+1)にアクセス中にエラーが発生しました.
=[-1]*(n+1)にアクセスした場合は正しいです.
どうしてですか.
import sys
from collections import deque
input = sys.stdin.readline

n, m, k, x = map(int, input().split())
graph = [[] for _ in range(n+1)]

for i in range(m):
    a,b = map(int, input().split())
    graph[a].append(b)

visited = [-1] * (n+1)

def bfs(x):
    queue = deque()
    queue.append(x)
    visited[x] = 0
    while queue:
        v = queue.popleft()
        for i in graph[v]:
            if visited[i] == -1:
                visited[i] = visited[v] + 1
                queue.append(i)

bfs(x)

answer = []

if k not in visited:
    print(-1)
else:
    for i in range(len(visited)):
        if k == visited[i]:
            answer.append(i)
    answer.sort()
    for i in answer:
        print(i)