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

题面:http://uoj.ac/problem/14


考虑只有前两个操作怎么做。

每次删除一定是从后往前删,并且被删的边如果不是树边则没有影响,如果是树边也不存在边能替代。

直接删除这条边就可以。

于是用一个栈来保存现场,然后按秩合并的并查集维护就OK了。

现在有撤回操作,但根据上面对删边分析出的性质。

可以这样:

如果是插入一条边,然后撤回,相当于删边。

如果删边然后撤回,相当于什么也不做。

代码还是很好理解的。

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
typedef long long ll;
#define N 500050
inline char nc() {
static char buf[100000],*p1,*p2;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
int rd() {
int x=0; char s=nc();
while(s<'0'||s>'9') s=nc();
while(s>='0'&&s<='9') x=(x<<3)+(x<<1)+s-'0',s=nc();
return x;
}
char rc() {
char s=nc();
while(s!='A'&&s!='D'&&s!='R'&&s!=EOF) s=nc();
return s;
}
int fa[N],S[N],top,ec[N],n,m,siz[N];
ll ev[N];
int find(int x) {return fa[x]==x?x:find(fa[x]);}
inline void output(int x) {printf("%lld\n",ec[x]==n-1?ev[x]:0ll);}
void add(int x,int y,int z) {
int dx=find(x),dy=find(y);
top++; ec[top]=ec[top-1]; ev[top]=ev[top-1];
if(dx==dy) S[top]=0;
else {
if(siz[dx]>siz[dy]) swap(dx,dy);
S[top]=dx; fa[dx]=dy; siz[dy]+=siz[dx]; ec[top]++; ev[top]+=z;
}
}
void del(int K) {
while(K--) {
int t=S[top--]; siz[fa[t]]-=siz[t]; fa[t]=t;
}
}
int main() {
n=rd(); m=rd();
int i,x,y;
for(i=1;i<=n;i++) fa[i]=i,siz[i]=1;
char s=rc();
for(i=1;i<=m;i++) {
if(s=='A') {
x=rd(); y=rd(); add(x,y,i);
output(top);
s=rc();
if(s=='R') del(1);
}else if(s=='D') {
x=rd();
output(top-x);
s=rc();
if(s!='R') del(x);
}else {
output(top); s=rc();
}
}
}

UOJ_14_【UER #1】DZY Loves Graph_并查集的更多相关文章

  1. UOJ14 DZY Loves Graph 并查集

    传送门 题意:给出一张$N$个点,最开始没有边的图,$M$次操作,操作为加入边(边权为当前的操作编号).删除前$K$大边.撤销前一次操作,每一次操作后询问最小生成树边权和.$N \leq 3 \tim ...

  2. cf444E. DZY Loves Planting(并查集)

    题意 题目链接 Sol 神仙题啊Orzzzzzz 考场上的时候直接把树扔了对着式子想,想1h都没得到啥有用的结论. 然后cf正解居然是网络流??出给NOIP模拟赛T1???¥%--&((--% ...

  3. UOJ14 UER #1 DZY Loves Graph(最小生成树+并查集)

    显然可以用可持久化并查集实现.考虑更简单的做法.如果没有撤销操作,用带撤销并查集暴力模拟即可,复杂度显然可以均摊.加上撤销操作,删除操作的复杂度不再能均摊,但注意到我们在删除时就可以知道他会不会被撤销 ...

  4. [UER #1] DZY Loves Graph

    题目描述 开始有 \(n\) 个点,现在对这 \(n\) 个点进行了 \(m\) 次操作,对于第 \(i\) 个操作(从 \(1\) 开始编号)有可能的三种情况: \(Add\) a b: 表示在 \ ...

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

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

  6. 【UER #1】[UOJ#12]猜数 [UOJ#13]跳蚤OS [UOJ#14]DZY Loves Graph

    [UOJ#12][UER #1]猜数 试题描述 这一天,小Y.小D.小C正在愉快地玩耍. 小Y是个数学家,他一拍脑袋冒出了一个神奇的完全平方数 n. 小D是个机灵鬼,很快从小Y嘴里套出了 n的值.然后 ...

  7. CF 445B DZY Loves Chemistry(并查集)

    题目链接: 传送门 DZY Loves Chemistry time limit per test:1 second     memory limit per test:256 megabytes D ...

  8. CodeForces 445B. DZY Loves Chemistry(并查集)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://codeforces.com/problemset/prob ...

  9. 【UER #1】DZY Loves Graph

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

随机推荐

  1. Django之forms表单类

    Form表单的功能 自动生成HTML表单元素 检查表单数据的合法性 如果验证错误,重新显示表单(数据不会重置) 数据类型转换(字符类型的数据转换成相应的Python类型) 1.创建Form类 from ...

  2. gulp入门-压缩js/css文件(windows)

    类似于grunt,都是基于Node.js的前端构建工具.不过gulp压缩效率更高. 工具/原料 nodejs/npm 方法/步骤 首先要确保pc上装有node,然后在global环境和项目文件中都in ...

  3. session 的工作原理以及使用细节和url编码

    /**********************************************模拟页面************************************************* ...

  4. linux 跟踪工具

    strace工具,进程诊断.排错.跟踪系统调用和信号量 每行输出都是一个系统调用,包括函数和返回值. strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的 ...

  5. HDFS源码分析之DataXceiverServer

    DataXceiverServer是Hadoop分布式文件系统HDFS的从节点--数据节点DataNode上的一个后台工作线程,它类似于一个小型的服务器,被用来接收数据读写请求,并为每个请求创建一个工 ...

  6. Android 超高仿微信图片选择器 图片该这么载入

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39943731,本文出自:[张鸿洋的博客] 1.概述 关于手机图片载入器,在当今像 ...

  7. WCF探索之旅(三)——IIS公布WCF服务

    在之前的博客已经对WCF的基础知识做了介绍.而且做了一个简单的小样例. 假设你看了之前的博客,相信你已经对WCF有了一定的掌握.这篇博客主要说一下怎样把WCF服务公布的IISserver上. 在上篇博 ...

  8. python 基础 2.2 if流程控制(二)

    一. if  else   1.逻辑值(bool)包含了两个值: ----True:表示非空的值,比如:string ,tuple,list,set,dictonary,所有非空的序列. -----F ...

  9. 【BZOJ3435】[Wc2014]紫荆花之恋 替罪点分树+SBT

    [BZOJ3435][Wc2014]紫荆花之恋 Description 强强和萌萌是一对好朋友.有一天他们在外面闲逛,突然看到前方有一棵紫荆树.这已经是紫荆花飞舞的季节了,无数的花瓣以肉眼可见的速度从 ...

  10. 怎么利用jquery.form 提交form

    说明:开发环境 vs2012 asp.net mvc c# 利用jQuery.form.js提交form 1.HTML前端代码 <%@ Page Language="C#" ...