Skip to main content
  1. Posts/
  2. Algorithm/

BOJ 16964 DFS 스페셜 저지

·122 words·1 min
Jiho Kim
Author
Jiho Kim
달려 또 달려

📝 문제 정보
#

🧐 관찰 및 접근
#

  • dfs를 돌리듯이 지금까지 걸어온 과정들을 기록하면서 다음 노드를 갈 수 있었는가?를 체크하자.

💻 풀이
#

  • 코드 (C++):
import sys
input = sys.stdin.readline

N = int(input())
links = [set() for _ in range(N + 1)]

for _ in range(N-1):
    a, b = map(int, input().split())
    links[a].add(b)
    links[b].add(a)

lst = list(map(int, input().split()))

if lst[0] != 1:
    print(0)
    exit()

nidx = 1
stk = [1]

while nidx < N:
    if not stk:
        print(0)
        exit()
    cur = stk[-1]
    if lst[nidx] in links[cur]:
        stk.append(lst[nidx])
        nidx += 1
    else:
        stk.pop()
print(1)
🔒

구현 코드 잠금

아래 쿠팡 링크를 방문하시면 코드가 공개됩니다.
광고 수익이 블로그 운영에 도움이 됩니다 🙏

🛒 쿠팡 방문하고 코드 보기

방문 후 잠금이 자동으로 해제됩니다