[Baekjoon/๐ฅSilverโ ก] 2644: ์ด์๊ณ์ฐ
Intro
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ BFS, DFS ๋ฌธ์ ์ด๋ค.
- ํ์๋ ํด๋น ๋ฌธ์ ๋ฅผ DFS๋ฅผ ์ฌ์ฉํด ํ์ดํ์๋ค.
Algoritm๐ฉโ๐ป: DFS
#22.02.03
#2644: ์ด์๊ณ์ฐ
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
def dfs(num, chk):
global lst, a, b
for j in lst[num-1]:
if j == b:
print(chk+1)
check[0] = True
return
elif check[j] == False:
check[j] = True
dfs(j, chk+1)
n = int(input())
a, b = map(int, input().split())
m = int(input())
lst = [[] for _ in range(n)]
for _ in range(m):
x, y = map(int, input().split())
lst[x-1].append(y)
lst[y-1].append(x)
check = [False for _ in range(n+1)]
check[a] = True
dfs(a, 0)
if check[0] == False:
print(-1)
-
๊ธฐ์ค์ด ๋ x์์ ๋ถํฐ y๊น์ง์ ์ด์๋ฅผ ๊ตฌํ๋ค.
- x์์ ์์ํด dfs๋ฅผ ์งํํ๋ค.
- ๊น์ด๊ฐ ์ฆ๊ฐํ ์๋ก ์ด์๋ ์ฆ๊ฐ์ํจ๋ค.
- ์ฐ๊ฒฐ๋ ๋ ธ๋์ y๊ฐ ์์ ๊ฒฝ์ฐ, ์ด์๋ฅผ +1ํ ๊ฐ์ ์ถ๋ ฅํ๋ค.
- ์น์ฒ ๊ด๊ณ ์ฌ๋ถ๋ check[0]์ ๊ฐ์ ํตํด์ ํ๋จํ๋ค.
์ด๋ฒ ํฌ์คํ ์ ์ฌ๊ธฐ์!
๋!! ~(หโพห~)
๋๊ธ๋จ๊ธฐ๊ธฐ