http://uoj.ac/problem/14

由于加入的边权递增,可以直接运行kruskal并支持撤销,但这样如果反复批量删边和撤销,时间复杂度会退化,因此需要对删边操作加上延时处理,只有在删边后下一个操作不是撤销时才执行删边。由于有撤销,并查集需要按秩合并且不路径压缩。

  1. #include<bits/stdc++.h>
  2. typedef long long i64;
  3. const int N=;
  4. int _(){
  5. int x;
  6. scanf("%d",&x);
  7. return x;
  8. }
  9. int n,m;
  10. int f[N][];
  11. int po,ep=,ep1=;
  12. #define sz f][1
  13. #define fa f][0
  14. int gf(int x){
  15. while(x!=x[fa])x=x[fa];
  16. return x;
  17. }
  18. void lk(int x,int y){
  19. x[fa]=y;
  20. y[sz]+=x[sz];
  21. }
  22. void ct(int x,int y){
  23. x[fa]=x;
  24. y[sz]-=x[sz];
  25. }
  26. struct ev{
  27. int a,b,ec;
  28. i64 sum;
  29. void undo(){ct(a,b);}
  30. }e[N];
  31. void fix(){
  32. while(ep1<ep)e[ep--].undo();
  33. }
  34. void ae(int v){
  35. po=;
  36. fix();
  37. ev&e0=e[ep];
  38. ev&e1=e[ep1=++ep];
  39. int x=gf(_()),y=gf(_());
  40. if(x==y){
  41. e1=(ev){,,e0.ec,e0.sum};
  42. }else{
  43. if(x[sz]>y[sz])std::swap(x,y);
  44. lk(x,y);
  45. e1=(ev){x,y,e0.ec+,e0.sum+v};
  46. }
  47. }
  48. void de(){
  49. po=;
  50. fix();
  51. ep1=ep-_();
  52. }
  53. void undo(){
  54. if(!po)e[ep--].undo();
  55. ep1=ep;
  56. }
  57. int main(){
  58. n=_();m=_();
  59. for(int i=;i<=n;++i){
  60. i[fa]=i;
  61. i[sz]=;
  62. }
  63. for(int i=,o;i<=m;++i){
  64. o=_();
  65. if(o==)ae(i);
  66. else if(o==)de();
  67. else undo();
  68. printf("%lld",e[ep1].ec==n-?e[ep1].sum:);
  69. }
  70. return ;
  71. }

uoj #14.【UER #1】DZY Loves Graph的更多相关文章

  1. 2019.01.22 uoj#14. 【UER #1】DZY Loves Graph(并查集)

    传送门 题意简述: 要求支持以下操作: 在a与b之间连一条长度为i的边(i是操作编号):删除当前图中边权最大的k条边:表示撤销第 i−1次操作,保证第1次,第i−1 次不是撤回操作. 要求在每次操作后 ...

  2. 【UOJ #14】【UER #1】DZY Loves Graph

    http://uoj.ac/problem/14 题解很好的~ 不带路径压缩的并查集能保留树的原本形态. 按秩合并并查集可以不用路径压缩,但是因为此题要删除,如果把深度当为秩的话不好更新秩的值,所以把 ...

  3. 【UER #1】DZY Loves Graph

    UOJ小清新题表 题目内容 UOJ链接 DZY开始有\(n\)个点,现在他对这\(n\)个点进行了\(m\)次操作,对于第\(i\)个操作(从\(1\)开始编号)有可能的三种情况: Add a b: ...

  4. 【UER #1】DZY Loves Graph(待卡常数)

    题解: 正解是可持久化并查集 但这个显然是lct可以维护的 但这常数是个问题啊??? #include <bits/stdc++.h> using namespace std; struc ...

  5. UOJ_14_【UER #1】DZY Loves Graph_并查集

    UOJ_14_[UER #1]DZY Loves Graph_并查集 题面:http://uoj.ac/problem/14 考虑只有前两个操作怎么做. 每次删除一定是从后往前删,并且被删的边如果不是 ...

  6. 【HDU 5647】DZY Loves Connecting(树DP)

    pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...

  7. 【BZOJ3563/BZOJ3569】DZY Loves Chinese I/II(随机化,线性基)

    [BZOJ3563/BZOJ3569]DZY Loves Chinese I/II(随机化,线性基) 题面 搞笑版本 正经版本 题面请自行观赏 注意细节. 题解 搞笑版本真的是用来搞笑的 所以我们来讲 ...

  8. UOJ#454. 【UER #8】打雪仗

    UOJ#454. [UER #8]打雪仗 http://uoj.ac/problem/454 分析: 好玩的通信题~ 把序列分成三块,\(bob\)先发出这三块中询问点最多的一块给\(alice\). ...

  9. 【BZOJ3563/3569】DZY Loves Chinese II 线性基神题

    [BZOJ3563/3569]DZY Loves Chinese II Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以 ...

随机推荐

  1. 环境变量、cp、mv、cat 等命令

    1.环境变量: PATH 个人理解 环境变量,即是所有命令文件所存放的目录,或是人为的定义的目录,(命令文件所存放的目录,当输入一个命令的时候,系统会自动找到且不报错,并不需要输入绝对路径,来运行相关 ...

  2. lucene随笔 IKAnalyzer StandardAnalyzer

    StandardAnalyzer 是单词分词器: String msg = "我喜欢你,我的祖国!china 中国,I love you!中华人民共和国"; 分词后的结果:[我], ...

  3. JavaSE笔记

    this关键字 哪个对象调用方法,方法定义中的this即为该对象的引用! static关键字 使用static声名的成员变量为静态成员变量,在第一次使用的时候被初始化,static成员变量只有一份 使 ...

  4. [小A与最大子段和][斜率优化dp+二分]

    链接:https://ac.nowcoder.com/acm/contest/545/A来源:牛客网题目描述 小A在网上看到了 "最大子段和" 问题的解法.第二天,小A向小B讲解了 ...

  5. hdu4998 Rotate 计算几何

    Noting is more interesting than rotation! Your little sister likes to rotate things. To put it easie ...

  6. ThinkPHP验证码类的使用

    1.创建一个方法并引入验证码类class ShowAction extends Action{//用户评论验证码public function verify(){import('ORG.Util.Im ...

  7. Sencha Touch app example -- oreilly app 分析

    from: 2013/8/30的笔记 使用development.js 读取 app.json 配置文件 app.json 配置了app.js文件 app.js lauch function ,首先用 ...

  8. ionic1页面间传递参数的问题

    1.  $scope.routeinfo是我要传递的参数--到scheddulcontent这个页面去: $state.go( "scheddulcontent" , { 'rou ...

  9. LeetCode - Convert BST to Greater Tree

    Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original B ...

  10. Stream Processing 101: From SQL to Streaming SQL in 10 Minutes

    转自:https://wso2.com/library/articles/2018/02/stream-processing-101-from-sql-to-streaming-sql-in-ten- ...