博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P3950 部落冲突 LCT
阅读量:5036 次
发布时间:2019-06-12

本文共 2029 字,大约阅读时间需要 6 分钟。

Code:

#include 
#include
#include
#include
using namespace std;void setIO(string a){ freopen((a+".in").c_str(),"r",stdin);}#define maxn 300080int n,m;struct Link_Cut_Tree{ int ch[maxn][2],f[maxn]; int tag[maxn],sta[maxn]; int get(int x) { return ch[f[x]][1]==x; } int which(int x) { return ch[f[x]][1]==x; } int isRoot(int x) { return !(ch[f[x]][1]==x||ch[f[x]][0]==x); } int lson(int x) { return ch[x][0]; } int rson(int x) { return ch[x][1]; } void mark(int x) { if(!x) return; swap(ch[x][0],ch[x][1]), tag[x]^=1; } void pushdown(int x) { if(tag[x]) mark(lson(x)), mark(rson(x)),tag[x]=0; } void rotate(int x) { int old=f[x],fold=f[old],which=get(x); if(!isRoot(old)) ch[fold][ch[fold][1]==old]=x; ch[old][which]=ch[x][which^1],f[ch[old][which]]=old; ch[x][which^1]=old,f[old]=x,f[x]=fold; } void splay(int x) { int v=0,u=x; sta[++v]=u; while(!isRoot(u)) sta[++v]=f[u],u=f[u]; while(v) pushdown(sta[v--]); u=f[u]; for(int fa;(fa=f[x])!=u;rotate(x)) if(f[fa]!=u) rotate(get(fa)==get(x)?fa:x); } void Access(int x) { for(int y=0;x;y=x,x=f[x]) splay(x),ch[x][1]=y; } void makeRoot(int x) { Access(x), splay(x), mark(x); } void link(int a,int b) { makeRoot(a), f[a]=b; } int findRoot(int a) { Access(a),splay(a); while(ch[a][0]) a=ch[a][0]; return a; } void cut(int a,int b) { makeRoot(a),Access(b),splay(b); f[a]=ch[b][0]=0; } bool judge(int a,int b) { int x=findRoot(a),y=findRoot(b); if(x!=y)return true; return false; }}tree;int u[maxn],v[maxn],p;int main(){ //setIO("input"); scanf("%d%d",&n,&m); for(int i=1;i

  

转载于:https://www.cnblogs.com/guangheli/p/10066203.html

你可能感兴趣的文章
Linux make语法
查看>>
用户体验之认知地图、思维导图和概念图
查看>>
bzoj3389 [Usaco2004 Dec]Cleaning Shifts安排值班
查看>>
bzoj3173 [Tjoi2013]最长上升子序列
查看>>
第八周作业
查看>>
spring事务隔离级别
查看>>
JavaEE:Eclipse开发工具的相关使用和XML技术
查看>>
LR_问题_如何将场景中的用户设置为百分比形式
查看>>
OpenShift-OKD3.10基础环境部署
查看>>
工程师淘金:开发Android主攻四大方向
查看>>
ASP.NET MVC——Controller的激活
查看>>
javascript中Array对象
查看>>
SQLSERVER中查看谁占用了Buffer Pool
查看>>
lamp环境安装shell脚本
查看>>
ASP.NET MVC使用jQuery实现Autocomplete
查看>>
model中字段格式验证
查看>>
host路径
查看>>
查看linux 内存
查看>>
HTTP 状态码
查看>>
Ubuntu 14.10 下卸载MySQL
查看>>