説明
説明:
永続をzkysbしてチェックするように設定することができますので、......
hzwerは:ACを走り書きすることができ、暴力は、標準的なプロセスステップ
KuribohGを:私は以上のパスを圧縮しないでください!
NDSF:暴力は簡単に悪用することができます!
ZKY:......
m個の動作のnセット
:操作
1 AB&マージ、Bセット。
操作k番目の2 K後の状態(クエリカウント動作)バック
3 ABは、同じセットに属するB、それは、尋ねます出力1は、そうでなければ0を出力
この問題は暗号化され、B、Kが与えられると、オンライン強制ことが注意をするための暗号化方式X = X XOR lastans、初期lastans値0
0 <N-、M <= 2 * 10 ^ 5
入力
出力
サンプル入力
5 6
1 2
3 1 2
2 1
3 0 3
2 1
3 1 2
1 2
3 1 2
2 1
3 0 3
2 1
3 1 2
サンプル出力
1
0
1
0
1
3673同様。
1の#include <iostreamの> 2の#include <cstdioを> 3の#include <cstdlib> 4の#include <CStringの> 5 使って 名前空間STDを、 6 INTの息子[ 4000010 ] [ 2 ]、パー[ 4000010 ]、CNT。 7 ボイドビルド(INT&X、int型の L、INT R) 8 { 9 X = ++ CNT。 10 であれば(L == R) 11 { 12 パー[X] = リットル; 13 リターン; 14 } 15 INT半ば=(L + R)>> 1 。 16 ビルド(息子[X] [ 0 ]、L、MID)。 17 ビルド(息子[X] [ 1 ]、ミッド+ 1 、R)。 18 } 19 空隙更新(INT&X、int型の L、INT R、INT P、INT V) 20 { 21 CNTを++ 。 22 息子[CNT] [ 0 ] =息子[X] [ 0 ]。 23 息子[CNT] [ 1 ] =息子[X] [ 1 ]。 24 X = CNT。 25 であれば(L == R) 26 { 27 パー[X] = V。 28 リターン; 29 } 30 INT半ば=(L + R)>> 1 。 31 であれば(p <= MID)更新(息子[X] [ 0 ]、L、中、P、V)。 32 他の更新(息子[X] [ 1 ]、ミッド+ 1 、R、P、V)。 33 } 34 INT getpar(int型のx、int型 L、int型の R、INT P) 35 { 36 であれば(L == R)リターン・パー[X]。 37 INT半ば=(L + R)>> 1 。 38 であれば(p <= MID)戻り getpar(息子[X] [ 0 ]、L、中、P)。 39 他 戻り getpar(息子[X] [ 1 ]、ミッド+ 1 、R、P)。 40 } 41 のintルート[ 200010 ]。 42 int型N、M。 43対< INT、INT > getrot(INT K、INT X) 44 { 45 INTY; 46 のint RNK = 0 。 47 一方((Y = getpar(ルート[k]は、1、N、X))= X!)RNK ++、X = Y。 48 リターンmake_pair(X、RNK)。 49 } 50 INT ANS。 51 のint main()の 52 { 53 のscanf(" %D%dの"、&N、&M)。 54 ビルド(ルート[ 0 ]、1 、N) 55 のために(int型 I = 1 ; I <= M Iは++ ) 56 { 57 int型オペアンプを。 58 のscanf(" %dの"、&OP)。 59 であれば(オペアンプ== 2 ) 60 { 61 のint 、K。 62 のscanf(" %dの"、&K)。 63 K ^ =のANS。 64 ルート〔I〕= ルート[K]。 65 } 66 他の 67 { 68 ルート〔I〕=ルート〔I- 1 〕。 69 int型A、B; 70 scanf関数(" %D%dの"、&、&B)。 71 ^ =のANS; B ^ =のANS。 72 対< INT、INT > TA = getrot(I- 1、A)、TB = getrot(I- 1 、B)。 73 = ta.first; B = tb.first。 74 であれば(OPの== 1 ) 75 { 76 INT RA = ta.second、RB = tb.second。 77 であれば(!= B) 78 { 79 であれば(RA <RB)更新(ルート[i]が、1、N、A、B)。 80 他の更新(ルート[I]、1 、N、B、A)。 81 } 82 } 83 他の 84 { 85 であれば(== b)はANS = 1。他の ANS = 0 ; 86 のprintf(" %d個の\ n " 、ANS)。 87 } 88 } 89 } 90 リターン 0 。 91 }