๋ฌธ์
๋ฐฑ์ค ์จ๋ผ์ธ ์ ์ง - 18352๋ฒ
ํ์ด ๊ณผ์
ํน์ ์ง์ ์์ ๋ชฉํ ์ง์ ์ ๋๋ฌํ๊ธฐ ์ํ ์ต๋จ ๊ฑฐ๋ฆฌ๋ค ์ค์์ K
์ธ ์ ์ ๋ค์ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค.
์ฒ์์๋ ๋จ์ํ BFS
๋ฌธ์ ์ธ์ค ์๊ณ ์ ๊ทผํ๋ค๊ฐ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์์ ๋๋ฌธ์ ์๊พธ ์ค๋ต์ด ๋ฐ์ํด์ ์ฝ์ง์ ํ๋ค๊ฐ
๋ค์ต์คํธ๋ผ
๋ก ๋ค์ ์ ๊ทผํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
์ฝ๋
import sys
from collections import deque
N, M, K, X = list(map(int, sys.stdin.readline().split()))
edges = [list(map(int, sys.stdin.readline().split())) for _ in range(M)]
def make_graph():
graph = [[] for _ in range(N + 1)]
for frm, to in edges:
graph[frm].append(to)
return graph
def bfs(graph):
answer, q = [], deque()
dist = [-1] * (N + 1)
dist[X] = 0
for near in graph[X]:
q.append(near)
dist[near] = 1
while q:
here = q.popleft()
for there in graph[here]:
if dist[there] == -1:
dist[there] = dist[here] + 1
q.append(there)
for there in range(1, N + 1):
if dist[there] == K:
answer.append(there)
return answer if answer else [-1]
def solution():
graph = make_graph()
answer = bfs(graph)
print(*answer, sep='\n')
solution()
๋ฐ์ํ
'๐ algorithm > boj' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ 3184 - ์ (0) | 2021.03.18 |
---|---|
BOJ 7562 - ๋์ดํธ์ ์ด๋ (0) | 2021.03.18 |
BOJ 16173 - ์ ํ์ ์ฉฐ๋ฆฌ(small) (0) | 2021.03.18 |
BOJ 2096 - ๋ด๋ ค๊ฐ๊ธฐ (0) | 2021.03.18 |
BOJ 14716 - ํ์๋ง (0) | 2021.03.18 |
๐ฌ ๋๊ธ