zoukankan      html  css  js  c++  java
  • 【可持久化数组】【rope】bzoj3673 bzoj3674 可持久化并查集 by zky

    rope教程:http://blog.csdn.net/iamzky/article/details/38348653

    Code(bzoj3673):

     1 #include<cstdio>
     2 #include<ext/rope>
     3 using namespace std;
     4 using namespace __gnu_cxx;
     5 rope<int> *fa[20001];
     6 int a,b,n,m,A[20001],op;
     7 int Root(int num,int x)
     8 {
     9     if(fa[num]->at(x)==x)
    10       return x;
    11     int rt=Root(num,fa[num]->at(x));
    12 //      if(rt==fa[num]->at(x))若不加这两行,bzoj3674会爆内存。
    13 
    14 //     return rt;
    15         fa[num]->replace(x,rt);
    16         return rt;
    17 }
    18 void Union(int num,int x,int y)
    19 {
    20     int U=Root(num,x),V=Root(num,y);
    21     fa[num]->replace(V,U);
    22 }
    23 int main()
    24 {
    25     scanf("%d%d",&n,&m);
    26     for(int i=1;i<=n;i++)
    27       A[i]=i;
    28     fa[0]=new rope<int>(A,A+n+1);
    29     for(int i=1;i<=m;i++)
    30       {
    31           fa[i]=new rope<int>(*fa[i-1]);
    32           scanf("%d",&op);
    33           if(op==1){scanf("%d%d",&a,&b);Union(i,a,b);}
    34           else if(op==2){scanf("%d",&a);fa[i]=fa[a];}
    35           else{scanf("%d%d",&a,&b);printf("%d
    ",Root(i,a)==Root(i,b));}
    36       }
    37     return 0;
    38 }
    ——The Solution By AutSky_JadeK From UESTC 转载请注明出处:http://www.cnblogs.com/autsky-jadek/
  • 相关阅读:
    Hibernate
    Mysql
    JavaWeb
    Springboot
    spring MVC
    spring
    mybatis学习
    ftp客户端封装
    win10子系统 wsl开机启动ssh服务
    eclipse 终于官方支持代码模糊提示了
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/3959459.html
Copyright © 2011-2022 走看看