백준 18352 파이썬 BFS탐색 알고리즘
2024. 6. 4. 06:18ㆍ코딩 도구/백준
반응형
백준 18352 - 특정 거리의 도시 찾기
문제
https://www.acmicpc.net/problem/18352
답안 코드 :
import sys
from collections import deque
input = sys.stdin.readline
N, M, K, X = map(int, input().split()) # 노드의 수, 에지의 수, 목표거리, 시작점
A = [[] for _ in range(N + 1)]
answer = []
visited = [-1] * (N + 1)
def BFS(v): # BFS 탐색 함수 구현
queue = deque()
queue.append(v)
visited[v] += 1
while queue:
now_Node = queue.popleft()
for i in A[now_Node]:
if visited[i] == -1:
visited[i] = visited[now_Node] + 1
queue.append(i)
for _ in range(M):
S, E = map(int, input().split())
A[S].append(E)
BFS(X)
for i in range(N + 1):
if visited[i] == K:
answer.append(i)
if not answer:
print(-1)
else:
answer.sort()
for i in answer:
print(i)
생각 :
# 문제 분석
# 모든 도로의 거리가 1이라서 가중치가 없는 인접 리스트로 표현
# 도시 300,000 , 도로 최대 크기 1,000,000이므로 BFS탐색사용하면 해결 가능
# 문제 풀이
# 인접 리스트로 도시, 도로 그래프 구현
# BFS탐색 알고리즘으로 탐색하면서 각 최단 거릿값을 방문 리스트에 저장
# 탐색 종료 후 방문 리스트에서 값이 K와 같은 도시 번호를 출력
그래프 표현 참고자료 블로그
반응형
'코딩 도구 > 백준' 카테고리의 다른 글
백준 2251 파이썬 BFS 과정 (0) | 2024.06.06 |
---|---|
백준 1707 파이썬 모든 노드로 각각 DFS탐색 (3) | 2024.06.05 |
백준 1033 파이썬 DFS와 최대공약수 (3) | 2024.06.03 |
백준 1850 파이썬 최대 공약수를 유클리드 호제법 (17) | 2024.06.02 |
백준 1934 파이썬 유클리드 호제법 (20) | 2024.06.01 |