可以发现,从头到尾有一堆点是始终连在一起的,所以把没被删掉的一开始就有的边都加上后求出每个联通块,

缩完点后我们发现,边数也减少得差不多了,剩下的就直接暴力。

#include<cstdio>
#define N 5010
#define M 200010
#define Q 10010
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
struct opration{int k,i,j;}op[Q];
int n,m,q,i,u[M],v[M],f[N],id[N],tot,g[N],from[N],ed,w[M],nxt[M],ans,time,e[N][N];
bool del[N][N],have[N][N];
char c;
int F(int x){return f[x]==x?x:f[x]=F(f[x]);}
inline void addedge(int x,int y){w[++ed]=y;nxt[ed]=g[x];g[x]=ed;}
void dfs(int x,int y){
from[x]=y;
for(int i=g[x];i;i=nxt[i])if(e[x][w[i]]&&from[w[i]]!=y)dfs(w[i],y);
}
inline void add(int x,int y){
if(from[x]!=from[y]){
ans--;
dfs(y,from[x]);
}
e[x][y]++;e[y][x]++;
if(!have[x][y])addedge(x,y),addedge(y,x),have[x][y]=have[y][x]=1;
}
inline void deled(int x,int y){
e[x][y]--;e[y][x]--;
dfs(x,++time);
if(from[y]!=from[x])ans++;
}
int main(){
for(read(n),read(m),i=1;i<=m;i++)read(u[i]),read(v[i]);
for(read(q),i=1;i<=q;i++){
while(!(((c=getchar())=='A')||(c=='D')||(c=='Q')));
if(c=='A')read(op[i].i),read(op[i].j);
if(c=='D')op[i].k=1,read(op[i].i),read(op[i].j),del[op[i].i][op[i].j]=del[op[i].j][op[i].i]=1;
if(c=='Q')op[i].k=2;
}
for(i=1;i<=n;i++)f[i]=i;
for(i=1;i<=m;i++)if(!del[u[i]][v[i]]&&F(u[i])!=F(v[i]))f[f[u[i]]]=f[v[i]];
for(i=1;i<=n;i++)f[i]=F(i);
for(i=1;i<=n;i++){
if(!id[f[i]])id[f[i]]=++tot;
f[i]=id[f[i]];
}
ans=time=tot;
for(i=1;i<=tot;i++)from[i]=i;
for(i=1;i<=m;i++)if(f[u[i]]!=f[v[i]])add(f[u[i]],f[v[i]]);
for(i=1;i<=q;i++){
op[i].i=f[op[i].i],op[i].j=f[op[i].j];
if(op[i].k==0&&op[i].i!=op[i].j)add(op[i].i,op[i].j);
if(op[i].k==1&&op[i].i!=op[i].j)deled(op[i].i,op[i].j);
if(op[i].k==2)printf("%d\n",ans);
}
return 0;
}

  

BZOJ3562 : [SHOI2014]神奇化合物的更多相关文章

  1. 大视野3562 [SHOI2014]神奇化合物

    http://www.lydsy.com/JudgeOnline/problem.php?id=3562 //Accepted 6020 kb 1012 ms //由于题目的特殊要求:然而,令科学家们 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 【BZOJ-3696】化合物 树形DP + 母函数(什么鬼)

    3696: 化合物 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 165  Solved: 85[Submit][Status][Discuss] D ...

  4. [FJSC2014]化合物

    [题目描述] 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题. 这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏,这个游戏很蛋疼,我相信你们也没有兴趣听. 由于这个游戏涉及 ...

  5. [BZOJ 3553][SHOI2014]三叉神经树

    传送门(下面也有题面) 题目大意: 一颗有根树,每个非叶子节点都有三个子节点,每个节点的权为0/1. 每个节点的权 取决于其所有子节点中 哪种权出现的次数更多. 有若干次询问,每次询问修改一个叶子节点 ...

  6. 【BZOJ3696】化合物 树形DP+暴力

    [BZOJ3696]化合物 Description 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题.    这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏.这个游戏很蛋疼 ...

  7. 【bzoj3696】化合物 树形dp

    题目描述 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题.这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏.这个游戏很蛋疼,我相信你们也没有兴趣听.由于这个游戏涉及博弈论, ...

  8. [Bzoj3696]化合物【暴力+树形Dp】

    Online Judge:Bzoj3696 Label:暴力,树形Dp 题目描述 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题. 这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博 ...

  9. BZOJ 1006 【HNOI2008】 神奇的国度

    题目链接:神奇的国度 一篇论文题--神奇的弦图,神奇的MCS-- 感觉我没有什么需要多说的,这里简单介绍一下MCS: 我们给每个点记录一个权值,从后往前依次确定完美消除序列中的点,每次选择权值最大的一 ...

随机推荐

  1. mysql中select五种子句和统计函数

    select 五种子句顺序 where 条件 group by 分组 having 把结果进行再次筛选 order by  排序 limit  取出条目 统计函数  max(列名)  求最大 min( ...

  2. Loadrunner中Throughput(吞吐量)的分析与计算

    Throughput翻译为吞吐量,按照常规理解网络吞吐量表示在单位时间内通过网卡数据量之和,其中即包括本机网卡发送出去的数据量也包括本机网卡接收到的数据量,但这个理解在Loadrunner记录的Thr ...

  3. 端口扫描之王-----------nmap

    [root@ok data]# nmap -F -sT -v nmap.org Starting Nmap 5.51 ( http://nmap.org ) at 2016-10-23 12:46 C ...

  4. WCF分布式开发必备知识(1):MSMQ消息队列

    本章我们来了解下MSMQ的基本概念和开发过程.MSMQ全称MicroSoft Message Queue,微软消息队列,是在多个不同应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一 ...

  5. Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...

  6. 【转载】python super的用法

    转载地址: http://blog.csdn.net/cxm19830125/article/details/20610533 super的用法是调用继承类的初始化方法,如下面的代码: class A ...

  7. 攻城狮在路上(叁)Linux(十三)--- 文件与目录的管理

    一.查看文件与目录: 1.命令格式:ls [-aAdfFhilnrRSt] 目录名称; 2.参数说明: -a:显示所有的文件,包括隐藏文件(隐藏文件一般以.开头). -d:仅列出目录本身. -l:列出 ...

  8. JS获取form表单的所有输入值

    function getFormQueryString(frmID) { var frmID=document.getElementById(frmID); var i,queryString = & ...

  9. 深入剖析iLBC的丢包补偿技术(PLC)

    转自:http://blog.csdn.net/wanggp_2007/article/details/5136609 丢包补偿技术(Packet Loss Concealment——PLC)是iLB ...

  10. vim实现全选功能

    转自:http://blog.csdn.net/csh159/article/details/7533872 曾经也在找看看有没有快捷的方法全选,但是网上很多都是重复,并且错误的,比如: 1,$y,这 ...