반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Level3
- VUE
- Medium
- 카카오
- python
- Doitvue.js입문
- dp
- javascript
- typescript
- 백준
- LeetCode
- 프로그래밍
- sql
- Level1
- 리트코드
- 파이썬
- 웹프로그래밍
- OS
- 프로그래머스
- 리액트
- CS
- 고득점Kit
- 동적계획법
- Level2
- web
- react
- 자바스크립트
- 코테연습
- 배열
- C++
Archives
- Today
- Total
[백준] 18352번 특정 거리의 도시 찾기 - python 본문
반응형
특정 거리의 도시 찾기
문제
어떤 나라에는 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다.
이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오. 또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상 0이라고 가정한다.
X로부터 출발하여 도달할 수 있는 도시 중에서, 최단 거리가 K인 모든 도시의 번호를 한 줄에 하나씩 오름차순으로 출력한다.
이 때 도달할 수 있는 도시 중에서, 최단 거리가 K인 도시가 하나도 존재하지 않으면 -1을 출력한다.
제한사항
첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개의 자연수 A, B가 공백을 기준으로 구분되어 주어진다. 이는 A번 도시에서 B번 도시로 이동하는 단방향 도로가 존재한다는 의미다. (1 ≤ A, B ≤ N) 단, A와 B는 서로 다른 자연수이다.
풀이
BFS로 주변 노드를 탐색하면서 거리를 1씩 늘려서 저장하고 거리가 k인 경우 answer에 담는다.
from collections import deque
n, m, k, x = map(int, input().split())
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
answer = []
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
q = deque([(0, x)])
visited[x] = True
while q:
c, cur = q.popleft()
if c == k:
answer.append(cur)
for n in graph[cur]:
if not visited[n]:
visited[n] = True
q.append((c + 1, n))
if answer:
answer.sort()
for a in answer:
print(a)
else:
print(-1)
반응형
'코테 문제 풀이' 카테고리의 다른 글
[백준] 18405번 경쟁적 전염 (0) | 2022.04.29 |
---|---|
[백준] 14502번 연구소 (0) | 2022.04.29 |
[프로그래머스] 빛의 경로 사이클 - python (0) | 2022.04.28 |
[프로그래머스] 교점에 별 만들기 - python (0) | 2022.04.27 |
[프로그래머스] 점프와 순간 이동 - python (0) | 2022.04.27 |
Comments