본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 18352 특정 거리의 도시 찾기

by Alan_Kim 2023. 2. 26.
728x90
반응형

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

 

문제 해결

  • 특정 지점까지 가는데 최소 거리가 k인 점을 찾는 문제 (DFS,BFS 다 되지만 거리가 정해져있으므로 BFS로 너비로 찾는 것이 좋다!)
  • 양방향 도로가 아니라는 것에 주의하자!

 

CODE

import sys
from collections import deque
input = sys.stdin.readline

n, m, k, x = map(int, input().split())
graph = [[] for _ in range(n+1)]


ans = []
visited = [-1 for _ in range(n+1)]

for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)


def bfs(v):
    queue = deque()
    queue.append(v)
    visited[v] += 1
    while queue:
        now = queue.popleft()
        for next in graph[now]:
            if visited[next] == -1:
                visited[next] = visited[now] + 1
                queue.append(next)
bfs(x)
for i in range(n+1):
    if visited[i] == k:
        print(i)
        ans.append(i)
if len(ans)==0:
    print(-1)
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 2251 물통  (0) 2023.02.28
[python] 백준 1525 퍼즐  (0) 2023.02.28
[python] 백준 1033 칵테일  (2) 2023.02.24
[python] 백준 1850 최대공약수  (0) 2023.02.24
[python] 백준 11689 GCD(n, k) = 1  (0) 2023.02.24

댓글