郁郁青青 长过千寻

并查集

    图论

  1. UFIND()
  2. MERGE(x,y)
  3. FFIND(n)

UFIND()

1
2
3
4
5
6
7
8
初始化dir数组使值和自身下标相等
初始化结构体数组G存放连通边
for i=0 to g.len-1
MERGE(g.x,g,y)
for i=0 to 顶点数
if(dir[i]==i)
count=count+1
return count

MERGE(x,y)

1
2
3
4
fx=FFIND(x)
fy=FFIND(y)
if fx!=fy
dir[fy]=fx

FFIND(n)

1
2
3
4
5
6
7
8
i=n
while dir[i]!=i
i=dir[i]
while dir[n]!=i
t=dir[n]
dir[n]=i
n=t
return n
页阅读量:  ・  站访问量:  ・  站访客数: