并查集防止爆栈
2015-06-26 10:16
141 查看
在并查集的时候经常遇到爆栈的情况,这里给推荐两种方法预防爆栈
①开外挂栈
下面是模板
①开外挂栈
#pragma comment(linker, "/STACK:1024000000,1024000000")②增加一个数组用来保存结点的熵值,使得根节点离子结点平摊下来的距离最小,主要在合并的时候需要用到
if(cou[fa]>cou[fb]){ f[fb]=fa; } else { f[fa]=fb; cou[fb]++; }
下面是模板
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<string>
#include<cmath>
#include<iostream>
using namespace std;
#define LL long long
#define ULL unsigned long long
int f[100005],cou[100005];
int res;
int find(int x){
if(f[x]!=x)
f[x] =find(f[x]);
return f[x];
}
void Union(int a,int b){
int fa = find(a);
int fb = find(b);
if(fa==fb) return false;
//并查集熵低的当父亲
if(cou[fa]>cou[fb]){ f[fb]=fa; } else { f[fa]=fb; cou[fb]++; }
}
int main(void){
return 0;
}
相关文章推荐
- Android学习 怎么将ListView默认滚动设置到后面
- qimage 与cv::mat 转化--> QPixmap
- 使用Xerces DOM 处理XML文件
- npm 安装太慢的解决办法
- [转]关闭ORACLE数据库
- C#创建目录,文件写入消息不覆 4000 盖原有消息
- Windows 10优秀壁纸是怎么设计出来的?
- 如何分析websphere中间件生成的javacore文件
- html页面显示list,生成下拉列表
- 想了23年后,马云开了家什么银行?
- 工作流学习——Activiti流程实例、任务管理四步曲
- ORACLE升级的一些事
- 最少拦截系统(贪心)
- android应用程序如何调用支付宝接口
- xcode6-添加真机设备
- ORACLE 更改用户名
- C++中const总结
- 开发社区
- 在Mac下面删除所有的.svn文件
- php从memcache读取数据再批量写入mysql的方法