<span>Luogu P4116 【Qtree3】</span>

我寻思这题为什么LCT题解这么少啊...
这个题目连换根都不要的话LCT岂不是不用维护翻转操作了嘛?
然后pushdown,makeroot等等函数都不要写了
然后50行就完事了???

#include <cstdio>
#define R register
const int MAXN=1e5+10;
int ch[MAXN][2],fa[MAXN],id[MAXN],co[MAXN];
#define ls(x) ch[x][0]
#define rs(x) ch[x][1]
inline int nroot(int x) { return ls(fa[x])==x||rs(fa[x])==x; }
inline int get(int x) { return x==rs(fa[x]); }
inline void update(int x) {
	id[x]=id[ls(x)]?id[ls(x)]:(co[x]?x:(id[rs(x)]?id[rs(x)]:0));
}
inline void rotate(int x) {
	int y=fa[x],z=fa[y],k=get(x),w=ch[x][!k];
	if(nroot(y)) ch[z][get(y)]=x;ch[x][!k]=y;ch[y][k]=w;
	if(w) fa[w]=y;fa[y]=x;fa[x]=z;update(x);update(y);
}
inline void splay(int x) {
	for(;nroot(x);rotate(x))
		if(nroot(fa[x])) rotate(get(x)^get(fa[x])?x:fa[x]);
}
inline void access(int x) {
	for(R int y=0;x;x=fa[y=x]) splay(x),rs(x)=y,update(x);
}
int n,q;
struct edge{ int y,next; }e[MAXN*2];
int cnt,head[MAXN];
inline void add(int x,int y) {
	e[++cnt].y=y;e[cnt].next=head[x];head[x]=cnt;
}
inline void dfs(int x,int fx) {
	fa[x]=fx;
	for(R int i=head[x];i;i=e[i].next) {
		if(e[i].y==fx)continue; dfs(e[i].y,x);
	}
}
int main(){
	scanf("%d%d",&n,&q);
	for(R int i=1;i<n;i++) {
		int x,y;scanf("%d%d",&x,&y);
		add(x,y);add(y,x);
	}
	dfs(1,0);
	while(q--) {
		int x,y;
		scanf("%d%d",&x,&y);
		if(x==0) { splay(y);co[y]^=1;update(y); }
		else {
			access(y);splay(y);
			printf("%d\n",id[y]==0?-1:id[y]);
		}
	}
	return 0;
}

还挺快的,快读都不加就3s了

全部评论

相关推荐

收到了小米的实习offer,犹豫是否要去。。。
认真搞学习:雷总还当过首富呢,公司不算大厂算独角兽吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务