Data structures 如何在不相交的集合数据结构中生成集合和求解并集?

Data structures 如何在不相交的集合数据结构中生成集合和求解并集?,data-structures,unions,disjoint-sets,Data Structures,Unions,Disjoint Sets,我在计算以下问题的输出时遇到了一个问题,我在一次测验中解决了这个问题。代码是:- Consider the following program: for i from 1 to 12: MakeSet(i) Union(2, 10) Union(7, 5) Union(6, 1) Union(3, 4) Union(5, 11) Union(7, 8) Union(7, 3) Union(12, 2) Union(9, 6) print(Find(6)) print(Find(3)) print

我在计算以下问题的输出时遇到了一个问题,我在一次测验中解决了这个问题。代码是:-

Consider the following program:
for i from 1 to 12:
MakeSet(i)
Union(2, 10)
Union(7, 5)
Union(6, 1)
Union(3, 4)
Union(5, 11)
Union(7, 8)
Union(7, 3)
Union(12, 2)
Union(9, 6)
print(Find(6))
print(Find(3))
print(Find(11))
print(Find(9))
假设不相交集数据结构被实现为数组({\tt minimable}[1\12]):({\tt minimable}[i])等于包含(i)的集合中的最小元素

以下程序的输出是什么?作为答案,输入四个由空格分隔的整数


经过计算,我得到的答案是1-2-1,但它显示它是不正确的。正确答案是什么???

对于如此小的输入,您可以手动构建集合并获得

1 6 9
2 10 12
3 4 5 7 8 11

因此,只有第一个和最后一个答案是正确的,因为Union有一个规则:if rank[i_id]>rank[j_id]:在i下分配j。
我们将得到所提到的@MBo集合,因此答案是1 3 1

第一个不相交集合:1-6-9名称集合为1,
第二个不相交集:2-10-12名称集为2,
第三个不相交集:3-4-5-7-8-11名称集为3

print(Find(6)) : In set 1
print(Find(3)) : In set 3
print(Find(11)) : In set 3
print(Find(9)) : In set 1

回答:1 3 1

这是在使用某种语法未知的特殊语言——任何地方都没有明显的集合。如果你说的是什么语言可能会有帮助
Union(2,10)
毫无意义,因为
2
10
是整数,而不是集合。@上面给出的chrisdd是伪码,1到12之间的整数都是单元素集合。