- O(LOGN)(N <= 10 ^ 6)
- https://www.cnblogs.com/cangT-Tlan/p/8846408.html
- ツリーは、各チェーンのデータ構造を維持するために、いくつかのチェーンに分割されています
-
1の#include <ビット/ STDC ++ H> 2 の#defineが長い長いっ 3 の#define RLLレジスタLL 4 の#define M 0x3f3f3f 5 の#define(iはLを= int型のための(I、L、R)の場合、I <= R。私は)++ 6を 使用して 名前空間はstdを、 7 N、M、S、ヘッド[M]、[M]、X、Y、Z、TOT、K、Tっ。 8 LL FA [M]、D [M]、トップ[M]、サイズ[M]、ID [M]、RIL [M]。 9 構造体ノード1 { 10 LLに、NXT。 11 }、E [M << 1 ]。 12 構造体NODE2 { 13 のLL L、R、和、フラグ; 14 }ツリー[M << 1]; 15 16 インラインLLリード(){ 17 のLL F = 1、和= 0 。 18 CHAR CH = GETCHAR()。 19 ながら(!isdigit(CH)){ 場合(CH == ' - ')、F = - 1 ; CH = GETCHAR();} 20 ながら(isdigit(CH)){合計=(合計<< 1)+(和<< 3)+(CH ^ 48)、CH = GETCHAR();} 21 リターンのF *の和。 22 } 23 24インラインボイド追加(LLのX、LLのY){ 25 E [++ TOT] .TO = Y; 26である E [TOT]は.nxt = ;頭部[X] 27 頭[X] = TOT; 28 } 29 30は、インラインボイド DFS1(U LL){ // 最初のパスをDFSツリートラバーサル、深さdの前処理、サイズこの点ノード数は、FA親ノード 31である D [U]は、D [FA [U] + = 1 ; 32 サイズ[U] = 1 ; 33である ため(RLL = Iヘッド[U]; I; I = E [I]が.nxt){ 34が IF(E [I] .TO =!FA [U]){ 35 FA [E [I] .TO] = U; 36 DFS1( E [I] .TO); 37 サイズ[U] + =サイズ[E [I]が.TO]; 38である } 39 } 40 } 41である 42はれるインラインボイド DFS2(U LL){ //は、子の数の重症度に応じてチェーン内のその点のみを確実に、エッジ分割数をノード。通常は重い側とライト側よりも少ないです。 43は、 LL T = 0 ; // トップ即ち点、この頂点の重い縁 44は IF TOP [U]は=(TOP [U]!)U; 45 用(RLLヘッドI = [U]; I; I = E [I]は.nxt){ 46は、 IF FA = [U] .TO(E [I] &&サイズ[E [I]は.TO]> T)T =!E [I] .TO; 47 } 48 IF (T) { 49 TOP [T]が= TOP [U]; 50 DFS2(T)。 51である } 52である ため(; I; RLLヘッドI = [U] I = E [I]が.nxt){ 53が IF(E [I] .TO FA = [U] && E [I] .TO =!T) DFS2(E [I] .TO); 54である } 55 } 56は、 57であるインラインLCA LL(LL X、Y LL){ // 2点が同一の操作が終了され、重鎖上に位置しています。そうでない場合、ポイントの重鎖の点の深さは、操作の終了時に浅い深さの点の位置もLCA望まれる深さまでスキップ 58 ながら(TOP [X]!= TOP [Y]){ 59 IF(D [トップ[X] < D [TOP [Y])スワップ(X、Y); 60 X = FA [TOP [X]]; 61である } 62が IF(D [X]> D [Y])スワップ(X、 Y) 63が リターンX; 64 } 65 66 INT メイン(){ 67 N =(読み取り)、M =(読み取り)、Sは= )(読み取ります。 68 (Iについて1、N- 1){X =読み取る()、Yは= (Y、X)を追加し、(x、y)を追加し、read()は} 69 DFS2(S)、DFS1(単数または複数); 70 (Iについて1、M){、y)は(読み取り= X =リード()のprintf(" %LLDする\ n " ;、LCA(X、Y))} 71 リターン 0 。 72 }
LCAテンプレートツリーセクションシーク
おすすめ
転載: www.cnblogs.com/wi1d3on/p/11330922.html
おすすめ
ランキング