并查集
2015-10-10 10:33
141 查看
const int maxn=1e5+7; int ufs[maxn]; int Find(int x) { if(ufs[x]<0) return x; return ufs[x]=Find(ufs[x]); //查找根的同时进行路径压缩 } void init() { memset(ufs,-1,sizeof(ufs)); } void U(int a, int b) { //合并 if((a=Find(a))==(b=Find(b))) return; ufs[a]+=ufs[b]; ufs[b]=a; } int getNum(int a){ //并查集元素个数 return -ufs[Find(a)]; }
相关文章推荐
- while(cin>>word)
- ***iOS开发中@selector的理解与应用
- 吼吼吼~
- Windows 批处理程序
- 代理传值
- PrintWriter类
- POJ - 3279 Fliptile(DFS)
- 计算机术语缩写
- UIScrollView大总结
- 性能测试的分类
- Validform使用教程
- Ubuntu 14.04 安装Scrapy 指南
- android 系统自带分享文字+图片到微信朋友圈
- 在C#代码中应用Log4Net 中配置文件的解释
- 需心平气和
- 单例继承
- Oracle数据文件、用户、schema、实例
- poj1637&&hdu1956 混合欧拉回图判断
- ubuntu下eclipse找不到jre
- 【Android实战】用ViewPager偏移看到下一页部分内容