1.题目
2.实现
3.结合例子题目分析
有n等于5个点,点[1]与[2]连线(连边=把两个集合合并),因为两者在一条边(连通块:A与B互通),所以输出 Yes。{Q2 1}中由于[1]与[2]相连,即点[1]所在的连通块有{点[1],[2]}2个点的数量。接着,点[2]又与[5]相连,点[5]所在连通块有{点[5],[2],[1]}3个点的数量。
4.伪代码分析
POINT-SAME1(n,m)
N<-100010
创建数组p[1..N],cnt[1..N]
创建函数find(x)
{if p[x]!=x
p[x]<-find(p[x])
return p[x]}
输入n,m的值
for i<-1 to n
p[i]<-i,cnt[i]<-1
while m--
输入操作op
if op<-'C'
{输入a,b的值
a<-find(a),b<-find(b)
if a!=b
then p[a]<-b;
cnt[b]<-cnt[b]+cnt[a];}
else if op<-'Q1'
{输入a,b的值
if find(a)==find(b)
then 输出'Yes'
else 输出'No'}
else 输入a
输出cnt[find(a)]
return 0
这个伪代码是自己写的,不规范,但便于自己记代码。
第一次写博客。