DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Spliting a tree

返回题目

题解

정점 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