티스토리 뷰
https://www.acmicpc.net/problem/18352
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
32
|
import sys
from collections import deque
input = sys.stdin.readline
n, m, k, x = map(int, input().split())
visited = [False] * (n + 1)
path = [[] for _ in range(n + 1)]
for _ in range(m):
a, b = map(int, input().split())
path[a].append(b)
answer = list()
q = deque()
q.append((x, 0))
while q:
town, count = q.popleft()
if count == k:
answer.append(town)
elif count < k:
for con in path[town]:
if not visited[con]:
visited[con] = True
q.append((con, count + 1))
if len(answer) == 0:
print(-1)
else:
answer.sort()
for ans in answer:
print(ans)
|
cs |
전형적인 BFS문제이다.
시작점에서부터 연결된 마을을 추가하며, 원하는 거리의 도시를 따로 저장한 후, 출력한다.
가장 중요한 점은, 파이썬의 경우 input().split()으로 하면 입력량이 많기 때문에 시간 초과가 난다.
sys.stdin.readline()을 사용해야 한다.
'algorithm'''problem solve' 카테고리의 다른 글
[백준] 18405 - 경쟁적 전염 (BFS) (0) | 2020.10.04 |
---|---|
[백준] 14502 - 연구소 (DFS, 완전탐색) (0) | 2020.10.04 |
[프로그래머스] 외벽 점검 (카카오, 구현, 순열) (0) | 2020.10.02 |
[백준] 15686 - 치킨 배달 (구현, 브루트포스) (0) | 2020.10.02 |
[프로그래머스] 기둥과 보 설치 (구현, 카카오) (0) | 2020.10.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 동적 계획법
- 구현
- 백트래킹
- 플로이드 와셜
- 인공지능
- c++
- 오픈소스
- 완전탐색
- c
- BFS
- 피보나치
- BaekJoon
- 파이썬
- 백준
- 코딩
- DP
- 알고리즘
- 프로그래머스
- 컨트리뷰톤
- 1932
- PyPy3
- LG
- 브루트포스
- 이분탐색
- 정렬
- DFS
- 카카오
- Dynamic Programming
- 한화큐셀
- webOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함