博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Poj(1182),种类并查集
阅读量:6569 次
发布时间:2019-06-24

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

题目链接:

再次熟练种类并查集,又积累点经验,和技巧,rank 0 2 1

先计算father[x] ,再更新rank[x];

 

#include 
int father[50010];int rank[50010];int Find_Set (int x){ int tmp; if(x!=father[x]) { tmp = father[x]; father[x] = Find_Set(father[x]); ///一定是先Find_Set,再计算rank,我这里一不小心就WA了,你必须是找到他的父节点的全值,才能计算x的权值. rank[x] = (rank[x]+rank[tmp])%3; } return father[x];}int main(){ int N,M; scanf("%d%d",&N,&M); for(int i=1; i<=N; i++) { rank[i] = 0; father[i] = i; } int ans = 0; for(int i=0; i
N||y>N) { ans++; continue; } int fx = Find_Set(x); int fy = Find_Set(y); if(flag==1) { if(fx==fy) { if(rank[x]!=rank[y]) ans++; } else { father[fy] = fx; rank[fy] = (rank[x]-rank[y]+3)%3; ///加上3,也没什么重要的含义咯,会模掉,k-0+3%3 } } else { if(fx==fy) { if(rank[x]!=(rank[y]+1)%3) ///可以吃,关系只相差1 ans++; } else { father[fy] = fx; rank[fy] = (rank[x]-rank[y]+2)%3; ///合并,+2没什么含义咯,这样理解,就是说,0与0,下一个就是2啦,0吃2,2吃1,1吃0 } } } printf("%d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/TreeDream/p/5719315.html

你可能感兴趣的文章
php autoload机制学习
查看>>
intellij idea 配置远程访问本地的tomcat项目
查看>>
利用onSaveInstanceState()方法保存Activity状态
查看>>
java线程入门篇(一)
查看>>
Failed to load JavaHL Library(windows和mac)
查看>>
Spring Hibernate Mybatis配置详解
查看>>
XXX语录,可以不信,但不能不看
查看>>
码农十年连载五
查看>>
WeX5 -- xcode7+iphone免费帐号打包详解
查看>>
ios小项目——新浪微博客户端总结
查看>>
Angularjs相关文章地址
查看>>
iOS定位服务与地图应用开发:高德地图开发
查看>>
老男孩架构师
查看>>
我的友情链接
查看>>
如何修改Exchange邮件报警信息
查看>>
浅谈Java throw, throws, try catch异常处理
查看>>
wampserver apache 500 Internal Server Error
查看>>
大型企业网络运维,ACL,VTP,NAT,vlan.总合。
查看>>
数据库的垂直划分和水平划分
查看>>
如何在多Node版本的情况下公用一个npm
查看>>