첫번째 코드
BFS 문제와 그래프 그리는 것을 신경쓰면서 코드를 작성하자.
사실 이전에 푼 BFS 문제와 비슷하게 느껴졌다!
import sys
input = sys.stdin.readline
from collections import deque
n, m, k, x = map(int, input().split())
A = [[] for _ in range(n+1)]
answer = []
visited = [-1] * (n+1)
for _ in range(m):
s, e = map(int, input().split())
A[s].append(e)
def BFS(x):
queue = deque()
queue.append(x)
visited[x] += 1
while queue:
now = queue.popleft()
for i in A[now]:
if visited[i] == -1:
visited[i] = visited[now] + 1
queue.append(i)
BFS(x)
for i in range(n+1):
if visited[i] == k:
answer.append(i)
if not answer:
print(-1)
else:
answer.sort()
for i in answer:
print(i)
통과!
그래프를 그리는 연습을 조금 더 해봐야겠다.
또한 BFS와 DFS의 차이가 아직 명확하지 않다...
그래도 BFS코드와 익숙해지는 중!
링크
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
048 이분 그래프 (0) | 2024.06.20 |
---|---|
047 효율적인 해킹 (미해결) (0) | 2024.06.20 |
045 Ax+By=C (0) | 2024.06.18 |
043 최대공약수 (0) | 2024.06.13 |
044 칵테일 (0) | 2024.06.13 |