F는 [I] [0]를 나타내고 아버지 수오
F [i]는 [1] 계속 나타내고 그들의
F는 [I] [2] 아들 수오를 나타낸다
사용법 #include <iostream> #INCLUDE <cstdio> #INCLUDE <CString을> #INCLUDE <cmath> #DEFINE MN 15500이 #DEFINE 하는 int 재 등록 하여 스페이스 성병; INT F [MN] [ 3 ]; INT (CNT), 헤드 [MN]; INT의 N, M, K, A [MN]; INT 힘 [MN]; 구조체 아이 { INT의 V, NXT; } E [ 2 * MN]; 보이드 추가 ( INT U, INT V) { 전자 [ ++ CNT] .V = V; E [CNT] .nxt =헤드 [U]; 헤드 [U] = CNT; } 공극 DP가 ( int로는 유, INT의 FA가) { // f는 [U]를 [0] = f는 [U]가 [2] = A [U]; // F [U] [1] = 0; INT D = 0x3f3f3f3f ; 대해 (ⅰ 다시 머리 = [U] I, I = E [I] .nxt) { INT의 V = E [I] .V; 경우 (V == FA가) 계속 ; DP (V U, 께); F [U] [ 0 ] + = 분 (F [V] [ 1 ], F [V] [ 2 ]); F [U] [ 1 ] + = 분 (F [V] [ 1 ], F [V] [ 2 ]); F [U] 2] + = 분 (F [V] [ 0 ], 분 (F [V] [ 1. ], F [V] [ 2 ])); D = 분 (D, F [V] [ 2 ]라는 우수한 성능을 나타내었다 (F [V] [ 2 ], F는 [V] [ 1. ))]; // [. 1] F는 [U]는 [2]라는 우수한 성능을 나타내었다는 (F는 [V], F는 [V] [2]) 다른 아들의 합을 나타낸다 . } F [U] [ 1. + = D] F [U] [ 2 ] ++ ; } INT 의 main () { 는 scanf ( " %의 D " , 및 N-)를, 대 (I = 다시 1. ; I <= N- - . 1 ; I ++ ) { INT A1, A2, A3, A4] 는 scanf ( " %의 D %의의 D ' , A1,A2); 추가 (A1, A2); 추가 (A2, A1); } DP ( 1 , 0 ); 의 printf ( " % D \ 없음 " , 분 (F [ 1 ] [ 1 ], F [ 1 ] [ 2 ])); 반환 0 ; }