グラフ理論エッセイ

XORそれをしてみましょう

この問題は、$ LCA $で行うことができますが、グラフ理論を実践するために、私は星を横断チェーンを使用する前に、方法を選択しましたが、

まず、いくつかのことを準備

1 ^ 0 = 2 = A ^ Aを0

そして、要求が一度各グラフトラバーサルを考えている場合は、その後のみ$ 40pts $、わかりますので、私は店に$のXORの$配列を使用します

これは、[V] $ XOR演算が一定で[U] $と$のXOR $のXOR関わらず、出発点として取られているノードの示すことができます。

コード

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  
4  int型 N、M、CNT = 0、ANS、書籍[ 100005 ]。
5  int型のヘッド[ 200005 ]のXOR [ 100005 ]。
6  
7  構造体のエッジ{
 8      整数であり;
9      int型のval;
10      int型NXT。
11  }。
12  
13エッジのエッジ[ 200005 ]。
14  
15  ボイドアドオン(int型 からINTint型の値){
 16      ++ CNT。
17      エッジ[CNT] .TO = であり;
18      エッジ[CNT] .nxt =ヘッド【から]。
19      エッジ[CNT] .val = 値。
20      [先頭から =] CNT。
21  }
 22  
23  ボイド のgetint型、今INT {最後)
 24      のためのint型!; I = - I =ヘッド[今] 1 ; I = エッジを[I] .nxt){
 25          であれば(エッジ[I] .TO != 最後){
26個              のXOR [エッジ[I] .TO] =用のXOR [今] ^ エッジ[I] .val。
27              GET (エッジ[I] .TO、今)。
28          }
 29      }
 30      リターン31  }
 32  
33  ボイドが解決(){
 34      のint U、V、W。
35      のmemset(ヘッド、 - 1はsizeof (ヘッド))。
36      のscanf(" %d個"、&N)
37      のためにint型 i = 1 ; iがN <; Iは++ ){
 38          scanf関数を(" %D%D%D "、&​​U&V、およびW)
39          追加(U、V、W)。
40          (V、U、W)を加えます。
41      }
 42      GET10 );
43      のscanf(" %dの"、&M)。
44      のためには、int型 I = 1 ; I <= M Iは++ ){
 45          のscanf(" %D%dの"、&​​U&V)を、
46          のprintf(" %d個の\ n "、のXOR [U] ^ のXOR [V])。
     }
 48  }
 49  
50  INT メイン(){
 51      (解きます)。
52      リターン 0 53 }
XORそれをしてみましょう

 

おすすめ

転載: www.cnblogs.com/CsyzFraction/p/11260666.html