結果

問題 No.1790 Subtree Deletion
ユーザー tailstails
提出日時 2021-12-19 06:12:55
言語 cLay
(20240104-1)
結果
WA  
実行時間 -
コード長 999 bytes
コンパイル時間 2,727 ms
コンパイル使用メモリ 175,256 KB
実行使用メモリ 18,880 KB
最終ジャッジ日時 2023-10-13 18:36:48
合計ジャッジ時間 4,634 ms
ジャッジサーバーID
(参考情報)
judge11 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 3 ms
7,436 KB
testcase_01 AC 2 ms
7,424 KB
testcase_02 AC 3 ms
7,472 KB
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 AC 6 ms
7,580 KB
testcase_09 AC 39 ms
18,584 KB
testcase_10 AC 57 ms
18,744 KB
testcase_11 AC 55 ms
18,636 KB
testcase_12 AC 30 ms
18,312 KB
testcase_13 AC 40 ms
16,852 KB
testcase_14 AC 17 ms
10,616 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

wgraph<ull> g;
ull na[1d5+1];
struct{int l,r;}lr[1d5+1];

int f(int i,int p,int x){
	lr[i].l=x++;
	REP(j,g.es[i]){
		int k=g.edge[i][j];
		if(k!=p){
			x=f(k,i,x);
		}else{
			na[lr[i].l]=g.cost[i][j];
		}
	}
	lr[i].r=x;
	return x;
}

int l[1d5],r[];
ull a[];

struct segt {
	ull a;
	int d,e;
};

inline
segt segtree_ph_func(segt a,segt b){
	segt r;
	int d=a.d-b.e;
	r.d=(d>=0?d:0)+b.d;
	r.e=(d>=0?0:-d)+a.e;
	r.a=(d>=0?a.a:0)^(d<=0?b.a:0);
	return r;
}

{
	ll@n;
	rd((l,r,a)(n-1));
	g.setEdge(n+1,n-1,l,r,a);
	f(1,0,1);
	segtree_ph<segt> t;
	t.walloc(n+2,1);
	t[0]=segt{0,0};
	t[n+1]=segt{0,0};
	rep(i,1,n+1){
		t[i]=segt{na[i],0};
	}
	t.build();
	ll@q;
	rep(q){
		ll@w,@x;
		if(w==1){
			{
				int i=lr[x].l-1;
				segt s=t[i];
				s.d+=1;
				t.change(i,s);
			}
			{
				int i=lr[x].r;
				segt s=t[i];
				s.e+=1;
				t.change(i,s);
			}
		}
		if(w==2){
			ull z=0;
			segt s1=t.get(0,lr[x].l);
			if(s1.d==0){
				segt s2=t.get(0,lr[x].r);
				z=s1.a^s2.a^na[lr[x].l];
			}
			wt(z);
		}
	}
}
0