https://www.acmicpc.net/problem/18352
1. 난이도 실버2
2. 내가 작성한 풀이
from collections import deque
import sys
input = sys.stdin.readline
INF = int(1e9)
n, m, k, x = map(int, input().rstrip().split())
distance = [INF] * (n+1) #최단거리 저장
distance[x] = 0
maps = [[] for _ in range(n+1)] #그래프 관계 저장
for i in range(m):
a,b = map(int, input().rstrip().split())
maps[a].append(b)
queue = deque()
queue.append(x)
while queue:
popX = queue.popleft()
for i in maps[popX]:
if distance[i] > distance[popX] + 1:
distance[i] = distance[popX] + 1
queue.append(i)
cnt = False
for i in range(1,n+1):
if distance[i] == k:
print(i)
cnt = True
if cnt == False:
print(-1)
다익스트라 알고리즘을 이용해서 문제를 풀었다.
토익스피킹 공부하느라 코테에 소홀했더니 다~~까묵었네
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 1707번 이분 그래프(python) (0) | 2023.03.20 |
---|---|
[백준] 1325번 효율적인 해킹(python) (0) | 2023.03.20 |
[백준] 1377번 버블 소트(python) (1) | 2023.03.08 |
[백준] 17298번 오큰수(python) (0) | 2023.03.07 |
[백준] 11003 최솟값 찾기(python) (0) | 2023.03.06 |
댓글