poj1258 kruskal算法+并查集 只要47MS我也是醉了
来源:互联网 发布:三菱plc fx仿真软件 编辑:程序博客网 时间:2024/06/11 19:43
//poj1258 kruskal算法+并查集 为什么只要47MS? #include <iostream>#include <algorithm>#define inf 100005using namespace std;int max1;int father[105];int rank[105];struct edge{int st;int ed;int w;}e[10005];int top = 0;void addEdge(int x, int y, int z){e[top].st = x;e[top].ed = y;e[top].w = z;top++;}void makeset(int n){for(int i = 0; i < n; i++){father[i] = i;rank[i] = 0;}}int find(int x){if(x != father[x])father[x] = find(father[x]);return father[x];}bool Union(int x, int y){int px = find(x);int py = find(y);if(px != py){if(rank[px] > rank[py])father[py] = px;else{if(rank[px] == rank[py])rank[py]++;father[px] = py;}return true;}return false;}int cmp(const void* a, const void* b){return ((edge*)a)->w - ((edge*)b)->w;}int kruskal(int n){//排序qsort(e, top, sizeof(e[0]), cmp); for(int i = 0; i < top; i++) { if(Union(e[i].st, e[i].ed)) {max1 += e[i].w; } }return max1;}int main(){int n; cin>>n;while(n && !cin.eof()){top = 0;for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){int w;cin>>w;addEdge(i, j, w);}}makeset(n); max1 = 0; cout<<kruskal(n)<<endl; cin>>n;}return 0;}
0 0
- poj1258 kruskal算法+并查集 只要47MS我也是醉了
- poj2485 Kruskal算法+并查集 922MS险过
- Kruskal算法 (并查集)
- hdu1879(并查集+Kruskal算法)
- Kruskal算法+并查集实现
- HDU1863并查集和kruskal算法
- 图论 Kruskal算法 并查集
- poj1251 Kruskal算法+并查集
- 并查集实现Kruskal算法
- Kruskal算法的并查集实现
- Kruskal算法(并查集)
- [容易] kruskal 算法并查集实现
- poj1258 prime算法+距离表 还是47MS,搞不懂,过了就好。
- kruskal+ 并查集
- Kruskal+并查集
- Kruskal + 并查集
- POJ1258 Agri-Net,Kruskal算法
- 算法 最小生成树之 kruskal算法+并查集
- sublime text2添加ctags安装包
- cocos2dx Android接入芒果插屏广告
- 《数据库原理与应用》复习总结
- 十一式:开发者思维模式-简单而纯粹
- [NOI2005]瑰丽华尔兹 && dp单调队列
- poj1258 kruskal算法+并查集 只要47MS我也是醉了
- GPS北斗双模技术应用开发研究--数据解析
- 访问极路由接口,返回JSON路由器数据
- Android平台软件体系浅注
- 详解N字节对齐
- 利用Xtrabackup进行mysql数据库的备份
- UVA 11538 Chess Queen
- 常用但忽略的anroid知识2-回调问题
- C51堆栈问题/采用覆盖技术/keil 不同函数实行覆盖技术