博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
quick-find
阅读量:5209 次
发布时间:2019-06-14

本文共 2089 字,大约阅读时间需要 6 分钟。

#include 
#include
#include
#include
struct UnionFindSet{ int *ID; int GroupSum; int WeightOriginalTotal;};struct UnionFindSet* UnionFindSetInit(int WeightTotal){ struct UnionFindSet *UFSet = malloc(sizeof(struct UnionFindSet)); UFSet -> GroupSum = WeightTotal; UFSet -> WeightOriginalTotal = WeightTotal; UFSet -> ID = malloc(WeightTotal*sizeof(int)); int i; for(i = 0;i < WeightTotal;i ++) { UFSet -> ID[i] = i; } return UFSet; }int UnionFindSetFind(struct UnionFindSet* UFSet,int WeightNum){ if(WeightNum>UFSet -> WeightOriginalTotal-1 || WeightNum<0) { return -1; } return UFSet -> ID[WeightNum];}//return 1 if two are in the same weight,return 0 if everything ok,return -1 if ERRORint UnionFindSetUnion(struct UnionFindSet* UFSet,int Weight_1,int Weight_2){ int ID_1 = UnionFindSetFind(UFSet,Weight_1); int ID_2 = UnionFindSetFind(UFSet,Weight_2); if(ID_1 == -1 || ID_2 == -1) { return -1; } if(ID_1 == ID_2) { return 1; } int i; for(i = 0;i < UFSet -> WeightOriginalTotal;i ++) { if(UFSet -> ID[i] == ID_1) { UFSet -> ID[i] = ID_2; } } UFSet -> GroupSum --; return 0;}bool UnionFindSetIsConnected(struct UnionFindSet* UFSet,int Weight_1,int Weight_2){ return (UnionFindSetFind(UFSet,Weight_1) == UnionFindSetFind(UFSet,Weight_2));}int main(){ int i; struct UnionFindSet *UFSet = UnionFindSetInit(10); UnionFindSetUnion(UFSet,4,3); UnionFindSetUnion(UFSet,3,8); UnionFindSetUnion(UFSet,6,5); UnionFindSetUnion(UFSet,9,4); UnionFindSetUnion(UFSet,2,1); UnionFindSetUnion(UFSet,8,9); UnionFindSetUnion(UFSet,5,0); UnionFindSetUnion(UFSet,7,2); UnionFindSetUnion(UFSet,6,1); UnionFindSetUnion(UFSet,1,0); UnionFindSetUnion(UFSet,6,7); bool Result = UnionFindSetIsConnected(UFSet,0,1); printf("%d\n",Result); return 0;}

 

转载于:https://www.cnblogs.com/Asurudo/p/9427239.html

你可能感兴趣的文章
中文系统 上传file的input显示英文
查看>>
css样式写一个三角形
查看>>
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
javascript获取textarea中所选文本的开始位置、结束位置和选择的文本
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
事务备份还原分离附加
查看>>
JSch - Java实现的SFTP(文件上传详解篇)
查看>>
一些注意点
查看>>
.net 文本框只允许输入XX,(正则表达式)
查看>>
C#修饰符
查看>>
20.核心初始化之异常向量表
查看>>
[BSGS][哈希]luogu P3846 可爱的质数
查看>>
Python 第四十五章 MySQL 内容回顾
查看>>
iostat参数说明
查看>>
js 封装获取元素的第一个元素
查看>>
iOS 获取Home键指纹验证
查看>>
Python-Mac 安装 PyQt4
查看>>
P2571 [SCOI2010]传送带
查看>>
哈希表1
查看>>