- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并查集[讲义
并查集的时间复杂度 其中α(n)是Ackermann函数的某个反函数,增长速度及其缓慢。 α(n)=4。所以并查集的单次查找操作的时间复杂度也几乎是常数级的。 算法分析: 搜索可以实现(dfs,bfs) 并查集实现 0234500067103456050020456006710000000089 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) ◆ 逐行扫描,依次处理每一个点 ◆ 初始化:每个点的父亲指向本身 //每个数是独立的一个细胞 ◆ 处理点A(I,j): 3种情况如下: ◆ 如果B和C都是细胞:合并 P=find(c); q=find(b); If pq then father[p]=q father[A]=q; ◆ 如果B是而C不是,则 father[A]=B 或father[A]=find(B) ◆ 如果B不是而C是,则 father[A]=C 或father[A]=find(C) ◆ 统计父亲是自身(find(i)=i)的结点数即细胞的个数 const maxn=3000; type point=record x,y:integer; //行与列 end; a:array[1..maxn,1..maxn]of point; //父亲结点 b:array[0..maxn,0..maxn]of boolean; //是否是细胞 算法的实现: //数据读入 readln(n,m); for i:=1 to n do begin for j:=1 to m do begin read(ch); b[i,j]:=ch0; if b[i,j] then begin a[i,j].x:=i; a[i,j].y:=j; end; // 初始化父亲指向自身 end; readln; end; for i:=1 to n do for j:=1 to m do if b[i,j] then begin if b[i-1,j] and b[i,j-1] then //左与上是细胞 begin p:=find(i-1,j); q:=find(i,j-1); if (p.xq.x)or(p.yq.y) then a[p.x,p.y]:=q; a[i,j]:=q; end; if b[i-1,j]and not b[i,j-1] then //上是左不是 begin a[i,j].x:=i-1;a[i,j].y:=j; end; if b[i,j-1] and not b[i-1,j] then //上不是左是 begin a[i,j].x:=i;a[i,j].y:=j-1; end; end; 逐行扫描处理每个细胞结点 function find(x0,y0:longint):point; //查找当前位置(x0,y0)细胞的父亲结点 begin if (x0=a[x0,y0].x) and (y0=a[x0,y0].y) then exit(a[x0,y0]); find:
您可能关注的文档
- 巴楚文化旅游.pptx
- 市政道路监理大纲含重难.doc
- 市级优质课公开课现在分词作状语.ppt
- 布伦瑞克摩托公司MRP案例答.ppt
- 布病诊断与治.ppt
- 布林带战法及精准操作.ppt
- 布加氏综合.ppt
- 布袋除尘合.doc
- 布托啡诺临床应.ppt
- 布鲁姆教育目标分.ppt
- 某某单位2024年党建工作总结及2025年工作计划.doc
- 某某市发改委关于2024年度落实党风廉政建设工作责任制情况的报告.doc
- 某某局2024年全面从严治党和党风廉政建设工作总结.doc
- 某某区财政局2024年法治政府建设总结及2025年工作谋划.doc
- 2024年党管武装工作述职报告2篇.doc
- 2024年度国企党委书记抓基层党建工作述职报告3篇.doc
- 公司党委书记2024年述职述廉报告.docx
- 2024年度乡镇党委领导班子民主生活会(四个带头)对照检查材料.doc
- 市医疗保障局关于2024年法治政府建设工作情况的报告.docx
- 市民政局党组2024年巡察整改工作情况报告.docx
文档评论(0)