728x90
반응형
https://www.acmicpc.net/problem/18352
문제 해결
- 특정 지점까지 가는데 최소 거리가 k인 점을 찾는 문제 (DFS,BFS 다 되지만 거리가 정해져있으므로 BFS로 너비로 찾는 것이 좋다!)
- 양방향 도로가 아니라는 것에 주의하자!
CODE
import sys
from collections import deque
input = sys.stdin.readline
n, m, k, x = map(int, input().split())
graph = [[] for _ in range(n+1)]
ans = []
visited = [-1 for _ in range(n+1)]
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
def bfs(v):
queue = deque()
queue.append(v)
visited[v] += 1
while queue:
now = queue.popleft()
for next in graph[now]:
if visited[next] == -1:
visited[next] = visited[now] + 1
queue.append(next)
bfs(x)
for i in range(n+1):
if visited[i] == k:
print(i)
ans.append(i)
if len(ans)==0:
print(-1)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2251 물통 (0) | 2023.02.28 |
---|---|
[python] 백준 1525 퍼즐 (0) | 2023.02.28 |
[python] 백준 1033 칵테일 (2) | 2023.02.24 |
[python] 백준 1850 최대공약수 (0) | 2023.02.24 |
[python] 백준 11689 GCD(n, k) = 1 (0) | 2023.02.24 |
댓글