算法-并查集-基于hdu1232
2016-08-06 15:58
302 查看
下面是代码
#include<iostream> using namespace std; int RoadNum[1005]; int Find(int A) { if(RoadNum[A]== A) return A; else return Find(RoadNum[A]); } void SetIn(int A, int B) { int SetA= Find(A); int SetB= Find(B); if(SetA != SetB) RoadNum[SetA]= SetB; } int main() { int CitySum; int RoadSum; int CityA, CityB; int i, j; int Sum; while(cin>> CitySum && CitySum) { Sum= 0; cin>> RoadSum; for(j= 1; j<= CitySum; j++) { RoadNum[j]= j; } for(i= 0; i< RoadSum; i++) { cin>> CityA>> CityB; SetIn(CityA, CityB); } for(i= 1; i<= CitySum; i++) { if(RoadNum[i] == i) Sum ++; } cout<< Sum-1<< endl; } return 0; }并查集么,字面上的意思一个是并,一个是查,并是将每个有道路联通的城镇归到一个集合上,代码上的函数SetIn就是,查是找每一个城镇的父城镇,最后计算城镇的父城镇是自己本身的数量减一就ok了,就相当于一个父城镇下辖的几个子城镇被道路连成一块,求缺少的道路就是讲这几块连到一起,所以减一。
相关文章推荐
- 基于WGS和CBC测序策略的DNA序列拼接算法研究(一)
- 基于组件的C#农历算法
- 一种基于直方图模式的运动目标实时跟踪算法
- 基于视觉的Web页面分页算法VIPS的实现源代码下载
- 基于时间片优先级排课算法描述与分析
- 基于临界灰度值和亚像素的“边缘寻找”算法
- 一种精确的基于DHT的p2p网络搜索算法与网络拓扑模型
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
- 基于临界灰度值和亚像素的“边缘寻找”算法
- 基于八叉树快速分类的Shear-Warp交互式体绘制算法
- 基于WGS和CBC测序策略的DNA序列拼接算法研究(四)
- 基于WGS和CBC测序策略的DNA序列拼接算法研究 转载zhanghu1228的专栏
- 基于STL的字符串最大长度匹配算法
- 基于WGS和CBC测序策略的DNA序列拼接算法研究(五)
- 基于组件的C#农历算法
- 基于组件的C#农历算法
- 基于WGS和CBC测序策略的DNA序列拼接算法研究(三)
- 基于Bresenahams的画直线算法(J2ME版)
- 基于java的InputStream.read(byte[] b,int off,int len)算法学习!
- 基于时间片优先级排课算法描述与分析