https://www.acmicpc.net/problem/18352
18352번: 특정 거리의 도시 찾기
첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개
www.acmicpc.net
최단거리를 찾는 문제이기 때문에 bfs를 적용하여 문제를 해결했다.
from collections import deque
N, M, K, X = map(int, input().split())
Map = [[] for _ in range(N+1)]
for i in range(M):
x, y = map(int, input().split())
Map[x].append(y)
distance = [-1] * (N + 1)
#print(Map)
def bfs(Map, X):
queue = deque()
distance[X] = 0
queue.append(X)
while queue:
now = queue.popleft()
for i in Map[now]:
if distance[i] == -1:
queue.append(i)
distance[i] = distance[now] + 1
bfs(Map, X)
#print(distance)
check = False
for i in range(len(distance)):
if distance[i] == K:
print(i)
check = True
if not check:
print(-1)
문제 풀이중에 거리를 어떻게 적용해야할지 모르겠어서 찾아보았다.
따로 방문했다는 표시만 하는 것이 아니라 distance배열을 도입해서 도시에 처음 방문을 하면 전 도시의 거리에서 +1를해서 거리를 계산했다.
'알고리즘 > python' 카테고리의 다른 글
| 1316번 그룹 단어 체커(python3) (0) | 2022.01.25 |
|---|---|
| 이.코.테 바닥공사, 효율적인 화폐 구성(python3) (0) | 2022.01.25 |
| 이.코.테 1로 만들기, 개미 전사(python3) (0) | 2022.01.24 |
| 이.코.테 부품찾기, 정렬된 배열에서 특정 수의 개수 구하기(이진 탐색) (0) | 2022.01.24 |
| 16234번 인구 이동(python3) (0) | 2022.01.23 |