Algorithm/DFS&BFS
[์ด์ฝํ ] DFS/BFS/ ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ
์ ํธ๋
2024. 10. 30. 20:56
๐ ๋ฌธ์
https://www.acmicpc.net/problem/18352
๐ ๋ด๊ฐ ์๊ฐํ ํ์ด
BFS ์ฌ์ฉ,
๐ป ๋ด ์ฝ๋
visited ์ฌ์ฉํด์ ๋ค์ ํธ๋๋ฐ ์ค๋ฅ
from collections import deque
import sys
# n,m,k,x = map(int, input().split())
n,m,k,x = map(int, sys.stdin.readline().split())
graph = [[]for _ in range(n+1)]
# print(graph)
# q๋ ์ถ๋ฐ๋์
q = deque([x])
# set()์ผ๋ก ์ค์ ์ํ๋ฉด ๋ฐฑ์ค์์ ์ค๋ฅ
visited = set()
for _ in range (m):
a,b = map(int, input().split())
graph[a].append(b)
q.append(a)
visited.add(a)
# print(graph)
# ์ต๋จ๊ฑฐ๋ฆฌ k์ธ ๋์ ํ๋๋ ์์ผ๋ฉด -1, ์ ์ฒด -1๋ก ์ด๊ธฐํ
distance = [-1]* (n+1)
# ์ถ๋ฐ๋์ x์์ x๋ก ๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ๋ ํญ์ 0
distance[x] = 0
# BFS์ํ
while q:
now = q.popleft()
# ํ์ฌ ๋์์์ ์ด๋ํ ์ ์๋ ๋ชจ๋ ๋์ ํ์ธ
for next_node in graph[now]:
# ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๋์์ผ ๋ : -1
if next_node not in visited:
# ์ต๋จ ๊ฑฐ๋ฆฌ ๊ฐฑ์
distance[next_node] = distance[now]+1
q.append(next_node)
visited.add(next_node)
if k in distance:
for i in range(1,n+1):
if distance[i] == k:
print(i)
else:
print(-1)
๐ป ์ด์ฝํ ๋ต์
from collections import deque
n,m,k,x = map(int, input().split())
graph = [[]for _ in range(n+1)]
# print(graph)
for _ in range (m):
a,b = map(int, input().split())
graph[a].append(b)
# print(graph)
# ์ต๋จ๊ฑฐ๋ฆฌ k์ธ ๋์ ํ๋๋ ์์ผ๋ฉด -1, ์ ์ฒด -1๋ก ์ด๊ธฐํ
distance = [-1]* (n+1)
# ์ถ๋ฐ๋์ x์์ x๋ก ๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ๋ ํญ์ 0
distance[x] = 0
# BFS์ํ
# q๋ ์ถ๋ฐ๋์
q = deque([x])
# ์ฌ๊ธฐ๋ถํฐ ์ดํด ๋ค์
while q:
now = q.popleft()
# ํ์ฌ ๋์์์ ์ด๋ํ ์ ์๋ ๋ชจ๋ ๋์ ํ์ธ
for next_node in graph[now]:
# ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๋์์ผ ๋ : -1
if distance[next_node] == -1:
# ์ต๋จ ๊ฑฐ๋ฆฌ ๊ฐฑ์
distance[next_node] = distance[now]+1
q.append(next_node)
check = False
for i in range(1,n+1):
if distance[i] == k:
print(i)
check = True
if check == False:
print(-1)
๐ ์ฐธ๊ณ ์๋ฃ
https://velog.io/@kyeun95/๋ฐฑ์ค-18352๋ฒ-ํน์ -๊ฑฐ๋ฆฌ์-๋์-์ฐพ๊ธฐ
[๋ฐฑ์ค] 18352๋ฒ : ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ
https://www.acmicpc.net/problem/2606\[๋ฐฑ์ค] 18352 : ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ ๐ฅ(์ค๋ฒ2)๐ฏ 29.897%โฐ ๊ฑธ๋ฆฐ ์๊ฐ :55๋ถ์๊ณ ๋ฆฌ์ฆ ์ ํ : BFS & DFSโ ๋ฌธ์ ์์ฝ์ฒซ์งธ ์ค์ ๋์์ ๊ฐ์ N, ๋๋ก์ ๊ฐ์ M,
velog.io
โบ๏ธ ์๋ก ์๊ฒ ๋ ์ง์