LCT裸题-[BZOJ2049][Sdoi2008]Cave 洞穴勘测
2017-04-03 20:24
363 查看
我还是太naive了,splay循环的时候把更新f和g写到外面赋初值去了,然后就果不其然的T了。
PS:我曾一度迷信科学,直到长者出现。
两组样例,第一组是没问题的,第二组的空格是假的!是假的~假的~的。
PS:我曾一度迷信科学,直到长者出现。
两组样例,第一组是没问题的,第二组的空格是假的!是假的~假的~的。
#include<stdio.h> #include<stdlib.h> bool lz[10010]; int ch[10010][2],dl[10010],fa[10010]; void swap(int &x,int &y){ int z=x; x=y;y=z; } bool isroot(int d){ if(d==0)return 1; int f=fa[d]; return (ch[f][0]!=d && ch[f][1]!=d); } void push(int d){ if(lz[d]){ lz[d]=0; lz[ch[d][0]]^=1; lz[ch[d][1]]^=1; swap(ch[d][0],ch[d][1]); } } void xz(int d){ int f=fa[d],g=fa[f],c=(d==ch[f][1]); fa[d]=g; if(!isroot(f)) ch[g][f==ch[g][1]]=d; fa[f]=d; ch[f][c]=ch[d][c^1]; fa[ch[d][c^1]]=f; ch[d][c^1]=f; } void splay(int d){ int u=d,top=0; while(!isroot(u)){ dl[++top]=u; u=fa[u]; } dl[++top]=u; while(top) push(dl[top--]); int f,g; while(!isroot(d)){ f=fa[d],g=fa[f]; if(!isroot(f) && (f==ch[g][1])==(d==ch[f][1])) xz(f); xz(d); } } void access(int d){ int v=0; while(d){ splay(d); ch[d][1]=v; v=d;d=fa[d]; } } void makeroot(int d){ access(d),splay(d),lz[d]^=1; } void link(int u,int v){ makeroot(u),fa[u]=v; } void cut(int u,int v){ makeroot(u); access(v); splay(v); fa[ch[v][0]]=0; ch[v][0]=0; } /* bool query(int u,int v){ makeroot(u); access(v),splay(v); while(ch[v][0]) v=ch[v][0]; return v==u; } */ int find(int d){ while(fa[d]) d=fa[d]; return d; } bool query(int u,int v){ return (find(u)==find(v)); } int main(){ int i,j,n,m,u,v; char c[10]; scanf("%d%d",&n,&m); for(i=1;i<=m;i++){ scanf("%s",c); scanf("%d%d",&u,&v); if(c[0]=='Q'){ if(query(u,v)) printf("Yes\n"); else printf("No\n"); } else if(c[0]=='C') link(u,v); else cut(u,v); } return 0; }
相关文章推荐
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 LCT
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测( LCT )
- 【BZOJ 2049】[Sdoi2008]Cave 洞穴勘测 LCT模板
- bzoj 2049 [Sdoi2008]Cave 洞穴勘测(LCT)
- [BZOJ2049][SDOI2008]Cave 洞穴勘测(LCT)
- BZOJ 2049([Sdoi2008]Cave 洞穴勘测-LCT)[Template:LCT]
- [bzoj2049][Sdoi2008]Cave 洞穴勘测——lct
- 【BZOJ】2049 [Sdoi2008]Cave 洞穴勘测 LCT
- 【lct】bzoj2049 [Sdoi2008]Cave 洞穴勘测
- [BZOJ 2049] [Sdoi2008] Cave 洞穴勘测 【LCT】
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测(LCT裸题)
- 【LCT】BZOJ2049[Sdoi2008]Cave 洞穴勘测
- 【LCT】BZOJ2049 [SDOI2008]Cave 洞穴勘测
- _bzoj2049 [Sdoi2008]Cave 洞穴勘测【LCT】
- 【LCT】BZOJ2049 [Sdoi2008]Cave 洞穴勘测
- BZOJ_2049_[Sdoi2008]Cave 洞穴勘测_LCT
- 【BZOJ2049】【SDOI2008】Cave 洞穴勘测 LCT裸题 模版题 数组版
- 【BZOJ】2049: [Sdoi2008]Cave 洞穴勘测 LCT
- 【BZOJ】2049 [Sdoi2008]Cave 洞穴勘测 LCT入门题
- 【bzoj2049】[Sdoi2008]Cave 洞穴勘测 LCT