- 문제 : https://www.acmicpc.net/problem/18352
스스로 푼 문제이고, Silver Level 2 문제이다
dfs로 풀려다가 시간초과, 메모리 초과가 나서 bfs로 풀었다
data[b].append(a) 때문에 계속 출력 초과가 나다가 없애니까 바로 정답으로 떴다
문제에서 단방향 도로라는 것에서 힌트를 얻을 수 있다
- 정답 풀이 :
from collections import deque
n,m,k,x = map(int,input().split())
data = [[] for _ in range(n+1)]
for _ in range(m):
a,b = map(int,input().split())
data[a].append(b)
visit = [0]*(n+1)
distance = [0]*(n+1)
def bfs(v):
queue = deque()
queue.append(v)
result = []
while queue:
x = queue.popleft()
if distance[x] == k :
result.append(x)
elif distance[x] < k:
for i in data[x]:
if not visit[i]:
visit[i] = 1
distance[i] = distance[x] + 1
queue.append(i)
return result
visit[x] = 1
result = bfs(x)
if len(result) == 0 :
print(-1)
else:
result.sort()
for i in range(len(result)):
print(result[i])
'백준 > Search' 카테고리의 다른 글
[bfs/백준] 3584번 : 가장 가까운 공통 조상 (0) | 2022.08.10 |
---|---|
[bfs/백준] 1303번 : 전쟁 - 전투 (0) | 2022.08.10 |
[bfs/백준] 16946번 : 벽 부수고 이동하기 4 (itr) (0) | 2022.08.09 |
[dfs/백준] 1405번 : 미친 로봇 (0) | 2022.08.09 |
[bfs/백준] 17471번 : 게리맨더링 (0) | 2022.08.08 |