DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

트리 쪼개기

문제로 돌아가기

해설

정점 vvv의 차수를 deg⁡(v)\deg(v)deg(v)라고 하자.

deg⁡(v)≥2\deg(v) \geq 2deg(v)≥2라면 답은 000이다. vvv 하나를 제거하면 vvv에 연결되어 있던 각 방향이 서로 다른 연결 컴포넌트가 되므로, 정확히 deg⁡(v)\deg(v)deg(v)개의 연결 컴포넌트가 남는다.

이제 vvv가 리프라고 하자. vvv에서 가장 가까운 차수가 333 이상인 정점을 bbb라고 하고, vvv와 bbb 사이의 거리를 dd라고 하자.

k<dk<dk<d일 때 제거되는 정점들은 vvv에서 시작하는 하나의 단순 경로를 이룬다. 이 경로의 끝에 도달하기 전까지 차수가 333 이상인 정점이 없으므로, 남은 그래프는 연결되어 있거나 비어 있다. 따라서 연결 컴포넌트가 222개 이상이 될 수 없다.

k=dk=dk=d이면 bbb도 제거된다. bbb에서 vvv 방향으로 향하는 간선을 제외해도 bbb에는 적어도 두 개의 다른 방향이 있다. 이 방향들은 bbb를 제거한 뒤 서로 다른 연결 컴포넌트가 된다. 따라서 리프 의 답은 이다.

차수가 333 이상인 정점이 트리에 하나도 없다면 트리는 하나의 경로이다. 경로의 리프를 중심으로 어떤 반지름의 정점들을 제거해도 남은 그래프는 하나의 경로이거나 빈 그래프이므로 답은 −1-1−1이다. N=1N=1N=1인 경우도 같은 이유로 답은 −1-1−1이다.

따라서 다음과 같이 답을 정리할 수 있다.

  • 차수가 222 이상인 정점의 답은 000이다.
  • 리프의 답은 가장 가까운 차수가 333 이상인 정점까지의 거리이다. 그러한 정점이 없으면 −1-1−1이다.
  • 차수가 000인 정점의 답은 −1-1−1이다.

차수가 333 이상인 모든 정점을 시작점으로 하는 다중 시작점 BFS를 수행하면, 각 정점에서 가장 가까운 이러한 정점까지의 거리를 한 번에 구할 수 있다.

시간 복잡도는 O(N)O(N)O(N)이고, 메모리 복잡도는 O(N)O(N)O(N)이다.

d
vvv
ddd