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

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

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

hyperopia

문제로 돌아가기

해설

간선이 없는 포레스트를 ∅\varnothing∅로 쓰자. 포레스트 FFF와 정점 vvv에 대하여 F−vF-vF−v를 vvv에 인접한 모든 간선을 삭제한 포레스트로 정의한다. 정점 자체는 삭제하지 않는다.

정점 vvv에 있는 따스가 보는 정보는 F−vF-vF−v와 정확히 같다. 특히 자신의 차수가 000인 가능성을 생각하면, 그 가능성에 해당하는 포레스트는 유일하게 F−vF-vF−v이다.

S(F)S(F)S(F)를 포레스트 FFF에서 누군가가 처음으로 확신하는 날짜로 정의하고, S(∅)=0S(\varnothing)=0S(∅)=0으로 둔다. 다다스의 선언 직후에는 빈 포레스트가 가능한 세계에서 제외된다.

실제 포레스트가 FFF이고 이전 d−1d-1d−1일 동안 모두가 알 수 없다고 선언했다고 하자. 정점 vvv의 따스가 ddd일에 확신하려면, 자신의 차수가 000인 세계 F−vF-v가 이전 선언들과 모순이어야 한다. 따라서 다음 점화식이 성립한다.

S(F)=1+min⁡v:deg⁡F(v)>0S(F−v)S(F)=1+\min_{v:\deg_F(v)>0} S(F-v)S(F)=1+v:degF​

이 점화식은 최소 정점 커버의 크기와 같다.

포레스트 FFF의 최소 정점 커버 크기를 τ(F)\tau(F)τ(F)라고 하자. 간선이 없으면 τ(F)=0\tau(F)=0τ(F)=0이다. 정점 vvv를 정점 커버에 넣으면 vv에 인접한 모든 간선이 덮이고, 남은 문제는 의 최소 정점 커버이다. 따라서

τ(F)=1+min⁡v:deg⁡F(v)>0τ(F−v)\tau(F)=1+\min_{v:\deg_F(v)>0} \tau(F-v)τ(F)=1+v:degF​

가 성립한다. 위 두 점화식과 초기값이 같으므로 S(F)=τ(F)S(F)=\tau(F)S(F)=τ(F)이다.

이제 주어진 포레스트의 최소 정점 커버 크기를 구하면 된다. 각 트리를 임의의 정점에서 루트가 있는 트리로 만든다. 정점 uuu의 서브트리에 대하여 다음 DP를 정의한다.

  • dp0[u]\mathrm{dp}_0[u]dp0​[u]: uuu를 선택하지 않을 때 서브트리의 최소 정점 커버 크기
  • dp1[u]\mathrm{dp}_1[u]dp1​: 를 선택할 때 서브트리의 최소 정점 커버 크기

자식 www에 대해 다음 전이가 성립한다.

dp0[u]=∑wdp1[w]\mathrm{dp}_0[u]=\sum_w \mathrm{dp}_1[w]dp0​[u]=w∑​dp dp1[u]=1+∑wmin⁡(dp0[w],dp1[w])\mathrm{dp}_1[u]=1+\sum_w \min(\mathrm{dp}_0[w],\mathrm{dp}_1[w])dp1​[u]=1+w

각 연결 요소의 루트 rrr에서 min⁡(dp0[r],dp1[r])\min(\mathrm{dp}_0[r],\mathrm{dp}_1[r])min(dp0​[r],dp1​[를 더하면 답을 얻는다.

재귀 DFS는 길이 200 000200\,000200000인 경로에서 호출 스택이 넘칠 수 있다. 반복 DFS로 정점 순서를 만든 뒤 역순으로 DP를 계산하는 것이 안전하다.

시간 복잡도는 O(N+M)O(N+M)O(N+M)이고, 공간 복잡도는 O(N+M)O(N+M)O(N+M)이다.

Solution written by GPT5.6

F
−
v
(
v
)
>
0
min
​
S
(
F
−
v)
v
F−vF-vF−v
(
v
)
>
0
min
​
τ
(
F
−
v)
[
u
]
uuu
1
​
[
w
]
∑
​
min
(
dp0​
[
w
]
,
dp1​
[
w
])
r
])