트리 DP
DP [N] [2] :
현재 노드를 선택 또는 선택되지 않은 위해 DP //
// DP [I] [0] // 선택되지
// DP [I] [1] ; // 으로부터 선택된
상태 전이 식 (키) :
위한 ( INT 난 = 0 ; I <V [루트]를 크기는 (); I ++ ) { DP [루트] [ 0 ] + DP = [V [루트] [I] [ 1. ]; // 현재 노드가 선택되지 않은 경우, 하위 노드를 선택해야한다 [DP [루트] . 1 ] + = 분 (DP [V [루트] [I] [ 1. , DP [V [루트] [I] [ 0 ]); // 현재 노드가 선택된 자식 노드 (선택 / 선택되지 않은) }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 // ~ 노드의 수 (N)가 소정의 N-1 0 2 // 센티넬 노드 각각 센트리가 두 개의 인접한면에서 관찰 각 스테이션 3 // Q가 최소 개수를 요구 센티넬이 관찰 될 수있다 모든 가장자리 . 4 . 5 #INCLUDE < 문자열 .H> . 6 #INCLUDE <iostream> . 7 #INCLUDE는 <STDIO.H> . 8 <알고리즘> #INCLUDE . 9 <큐> #INCLUDE 10 <벡터> #INCLUDE . 11 <지도> #INCLUDE 12은 #INCLUDE <cmath> 13 인 은 USING 스페이스 STD; 14 #DEFINE INF 0x3f3f3f3f 15 #DEFINE inff 0x3f3f3f3f3f3f3f3f 16 CONST INT N = 1550 ] . 17 #DEFINE MOD 998 244 353 18은 typedef에 긴 롱 LL] . (19) (20)는 INT ] N- (21)는 <벡터 INT > V [N], (22)는 INT F [N], DP [N] [ 2 ] (23)가 // DP 현재 노드가 선택 여부 선택에 대해 24 // DP [I] [0] // 옵션 없음 25 // DP [I] [1.]; // 옵션 (26)은 공극 DFS ( int로 루트) 27 { 28 DP [루트] [ 0 ] =0 ] // 이는 루트 노드로부터 선택되어 있지 않은 29 [DP [루트] . 1 ] = . 1 ; // 현재 루트 선택 (30) 에 대해 ( INT I = 0 ; I <V [루트] 크기는 (); I ++ ) (31)가 DFS ( V [루트] [I]), 32 대 ( INT I = 0 I ++; I <V [루트] 크기는 () ) (33)가 { 34은 DP [루트] [ 0 ] + = DP [V [루트] [I ]] [ 1 ]; // 현재 노드가 선택되지 않은 경우, 하위 노드로부터 선택되어야한다 (35) DP [루트] [ 1 ] + = 분 (DP [V [루트] [I] [ 1, DP [V [루트] [I] [ 0 ]); // 현재 노드가 선택된 자식 노드 (선택 / 선택되지 않은) 36 } 37 } 38 인 39 INT 주 () 40 { 41은 그동안 (~는 scanf ( " %의 D " , )), N- (42)가 { 43 인 - memset 함수 (F . 1 , sizeof의 (F)는) // . 노드 ID 이후 0 ~ N-- 1 (44)은 위해 ( INT I = . 1 I <= N-; I ++ ) 45 { 46은 int로 상기 루트 노드의 아들 (47) (는 scanf을" %의 D (%의 D) " , 루트, 노드) (48) V [루트]하는 명확한 (); // 클리어 기억 (49) 에 대한이 ( INT J = 1. , J <= 노드, J ++ ) 50 { 51은 scanf와 ( " %의 D " , 아들) (52)은 V [루트] .push_back (SON) // 방향성 에지 (53)은 F [아들] = 상기 루트 (54)가 } 55 } 56는 INT X = 0 ] (57)이 그동안 (F [X] ! = -. (1) ) 58 X = F [X]; // 전체 트리의 루트 발견 59 ; DFS (X) (60) INT 미네소타 = 분 (DP [X] [ 0 ], DP를 [X] [ 1. ]) (61)는 의 printf ( " % D \ N- " 미네소타) 62이다 } (63)이 복귀 0 , 64 }
이분 그래프 매칭 (헝가리어 알고리즘) 운동