백준 14675 단절점과 단절선 Python

Derhon·2023년 12월 6일
0
post-custom-banner

백준 14675 단절점과 단절선

33.33m
오 뭔가 신기한 숫자..!

나의 답

import sys
input = sys.stdin.readline

n = int(input().rstrip())
tree = [[] for _ in range(n + 1)]

for _ in range(n - 1):
    p, c = list(map(int, input().rstrip().split()))
    tree[p].append(c)
    tree[c].append(p)

q = int(input().rstrip())
for _ in range(q):
    t, k = list(map(int, input().rstrip().split()))
    if t == 2:
        print('yes')
    else:
        if len(tree[k]) < 2: # 자식이 하나뿐인 루트이거나, 마지막 노드
            print('no')
        else:
            print('yes')

간선을 지우는 경우에는 무조건 트리가 2개 이상 생기고,
정점을 지우는 경우에는 두 경우 빼고는 전부 트리가 2개 이상 생긴다.

  1. 자식이 하나뿐인 루트 노드
  2. 마지막(리프) 노드

트리를 리스트로 받을 때, 연결된 것들을 전부 append 해놓았기 때문에, 연결점이 1개인 경우 위에 언급한 두 경우밖에 없다.

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/
post-custom-banner

0개의 댓글