[Baekjoon/๐ŸฅˆSilverโ…ก] 2644: ์ดŒ์ˆ˜๊ณ„์‚ฐ

์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

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]์˜ ๊ฐ’์„ ํ†ตํ•ด์„œ ํŒ๋‹จํ•œ๋‹ค.

๊ฒฐ๊ณผ

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์—ฌ๊ธฐ์„œ!

๋!! ~(ห˜โ–พห˜~)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ