๐Ÿ˜Š ๋ฐฑ์ค€ 2644 : ์ดŒ์ˆ˜๊ณ„์‚ฐ

3Juhwanยท2021๋…„ 2์›” 21์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
7/23

2644: ์ดŒ์ˆ˜๊ณ„์‚ฐ

DFS/BFS ์„ธ ๋ฒˆ์งธ ๋ฌธ์ œ!
์•„์ง๊นŒ์ง„ dfs์˜ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„ ๋ฌธ์ œ๋ผ ์–ด๋ ต์ง€ ์•Š๋‹ค.


๐Ÿ“Œ Try 1

def dfs(start_node, cnt, visit = list()):
    visit.append(start_node)
    
    if start_node == d2:
        print(cnt)
        global check
        check = 1
    
    for x in graph[start_node]:
        if x not in visit:
            dfs(x, cnt+1, visit)

# input
people = int(input())
d1, d2 = map(int, input().split())

graph = dict()
n = int(input())
for _ in range(n):
    x, y = map(int, input().split())
    
    if x in graph:
        graph[x].append(y)
    else:
        graph[x] = [y]
    if y in graph:
        graph[y].append(x)
    else:
        graph[y] = [x]

global check
check = 0

# output
dfs(d1, 0)

if check == 0:
    print(-1)

์–ด๋ ค์› ๋˜ ์ ์€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜€๋‹ค.
๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์•„, global ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์„œ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.


๐ŸŽฏ ๋‹ค๋ฅธ ๋ถ„ ์ฝ”๋“œ

from collections import deque
import sys

input = sys.stdin.readline
n = int(input())
a, b = map(int, input().split())
m = int(input())
s = [[] for i in range(n + 1)]
result = [0 for i in range(n + 1)]

def bfs(start):
    q = deque()
    q.append(start)
    visit = [0 for i in range(n + 1)]
    visit[start] = 1
    while q:
        d = q.popleft()
        for i in s[d]:
            if visit[i] == 0:
                visit[i] = 1
                result[i] = result[d] + 1
                q.append(i)
                
for i in range(m):
    x, y = map(int, input().split())
    s[x].append(y)
    s[y].append(x)
    
bfs(a)
print(result[b] if result[b] != 0 else -1)

double-list๋กœ graph๋ฅผ ๊ตฌ์„ฑํ•˜์…จ๋‹ค.

์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ถ€๋ถ„์ด ์ฐธ์‹ ํ•˜๋‹ค.
๋ณ„๋„์˜ list๋กœ ์ฒ˜๋ฆฌํ•˜์…จ๋Š”๋ฐ, ๋‚ด๊ฐ€ ์ž˜ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.


๐ŸŽ Reference

profile
Codeforces์™€ USACO ํ’€์ด๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€๋„ ๊ณ„์† ์—…๋ฐ์ดํŠธ ๋ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€