PASCAL并查集探索.ppt

并查集的时间复杂度 其中α(n)是Ackermann函数的某个反函数,增长速度及其缓慢。 α(n)=4。所以并查集的单次查找操作的时间复杂度也几乎是常数级的。 算法分析: 搜索可以实现(dfs,bfs) 并查集实现 0234500067 1034560500 2045600671 0000000089 dx:array[1..4]of integer=(1,0,-1,0); dy:array[1..4]of integer=(0,1,0,-1); //逐行逐列扫描: ans:=0; for i:=1 to n do for j:=1 to m do if b[i,j] then begin inc(ans); try(i,j); end; procedure try(i,j:integer);//dfs var k:integer; begin b[i,j]:=false;//访问标记 for k:=1 to 4 do if b[i+dx[k],j+dy[k]] then try(i+dx[k],j+dy[k]); end; A(i,j) B(i,j-1) C(i-1,j) ◆ 逐行扫描,依次处理每一个点 ◆ 初始化:每个点的父亲指向本身 //每个数是独立的一个细胞

文档评论(0)

1亿VIP精品文档

相关文档