无限膜拜CLJ大牛……

不会动态树的弱弱在CLJ的帮助下AC了此题

我想到了并查集(人人都会想到的吧……囧),但不知道应该如何处理destroy操作……

其实 make操作的实质就是:把x节点到其所在集合代表元的路上所有有向边都反过来,然后就可以处理本体所需的所有操作了(自己想想为何)。

代码:

 var i,n,m,x,y:longint;
ch,cha:char;
fa:array[..] of longint;
function find(x:longint):longint;
begin
while x<>fa[x] do x:=fa[x];
exit(x);
end;
procedure make(x:longint);
var y,tmp:longint;
begin
y:=fa[x];fa[x]:=x;
while y<>x do
begin
tmp:=fa[y];fa[y]:=x;
x:=y;y:=tmp;
end;
end;
procedure connect(x,y:longint);
begin
make(x);make(y);
fa[x]:=y;
end;
procedure destroy(x,y:longint);
begin
make(x);
fa[y]:=y;
end;
procedure query(x,y:longint);
begin
if find(x)<>find(y) then writeln('No') else writeln('Yes');
end;
procedure main;
begin
readln(n,m);
for i:= to n do fa[i]:=i;
for i:= to m do
begin
read(ch);cha:='a';while cha<>' ' do read(cha);readln(x,y);
if ch='C' then connect(x,y)
else if ch='D' then destroy(x,y)
else query(x,y);
end;
end; begin
main;
end.

最后我想说一句:并查集还大有文章可做!

最新文章

  1. .NET垃圾回收 – 原理浅析
  2. C# byte[]、struct、intptr等的相互转换
  3. 跟着百度学PHP[4]OOP面对对象编程-11-Final关键字
  4. Java面试题大全(三)
  5. HTML5 Web Storage
  6. Cheatsheet: 2014 03.01 ~ 03.31
  7. Spring3.0将全面支持REST
  8. 2016年JavaScript技术栈展望
  9. SaaS系列介绍之八: SaaS的运营模式
  10. [转贴]watin的一些例子
  11. Linux下软件的安装
  12. 给Array添加删除重复元素函数
  13. 2.2.2 胸腰差和胸臀差的应用_米人NOONE_新浪博客
  14. jquery实现上传图片预览(需要浏览器支持html5)
  15. 【Ubuntu 16】启动Eclipse Indigo报错 error code1 jdk没有配置好
  16. Iterator和Enumeration的区别
  17. Selenium模块的使用
  18. [Hibernate] 通过 properties 类和 hql 语句进行动态查询
  19. 【Spark】Spark性能调优
  20. Flutter基础用法解析

热门文章

  1. Catalyst揭秘 Day3 sqlParser解析
  2. Python学习_从文件读取数据和保存数据
  3. 去掉代码中自动生成的TODO Auto-generated method stub
  4. CSS 将按钮转成超链接样式
  5. C#写的SQL聚合函数
  6. 微软职位内部推荐-Sr Development Lead-OSG-IPX
  7. sharepoint One-Time Passwords (windows basic authentication)
  8. Impala入门笔记
  9. [转]BluetoothDevice.getType()-一个常常被忽略了的函数。好用的不要不要的
  10. [JavaScript] js 判断闰年