HDU-1829 A Bug's Life。并查集构造,与POJ1709异曲同工!
来源:互联网 发布:php下载文件代码 编辑:程序博客网 时间:2024/06/05 15:57
A Bug's Life
Find them, Catch them都是并查集构造的题,不久前MQL学长给我们拉过POJ上那道题,稍微复杂点,过了这么久竟然差不多忘完了,比赛的时候由队友在做这道题,我一直在看其他的题,在确定其他的题都不好做而且这个题好几个队都过了所以我们打算攻一攻这个题,只是依稀记得要用一个数组存与其对立的点,那么我们将与其对立的点都用并查集连起来,直接找是否有冲突就可以了。还好在思路不是很混乱的时候做出了这道题,不过比赛还是被学弟虐菜了。。。。。
题意:2种性别的病毒,为了验证异性相吸原则,做了个实验,然后给出两两配对的关系,求是否有冲突。
思路:和POJ1709那道类似,用一个diff数组存与其对立的病毒,当然,初始化可以为-1或本身(自己不可能和自己对立),然后只需在输入的时候将未赋值的赋值,然后将与这个病毒对立的病毒和当前对立的病毒用并查集连接起来就行了,只要存在冲突,肯定是可以判断的。
int find(int x){ return f[x]==x?x:f[x]=find(f[x]);}int main(){ int t,n,m; scanf("%d",&t); int t1=1; while(t--) { scanf("%d%d",&n,&m); int u,v,ff=0; for(int i=1;i<=n;i++) p[i]=i,f[i]=i; for(int i=0;i<m;i++) { scanf("%d%d",&u,&v); if(p[u]==u) p[u]=v; if(p[v]==v) p[v]=u; int u1=find(u),v1=find(v); int u2=find(p[u]),v2=find(p[v]); if(u2==v2||u1==v1) ff=1; f[u2]=v1; f[v2]=u1; } printf("Scenario #%d:\n",t1++); if(ff) puts("Suspicious bugs found!"); else puts("No suspicious bugs found!"); puts("");//注意输出问题 } return 0;}
0 0
- HDU-1829 A Bug's Life。并查集构造,与POJ1709异曲同工!
- 并查集Hdu 1829 A Bug's Life
- HDU 1829 A Bug's Life 并查集
- hdu 1829 A Bug's Life(并查集)
- HDU 1829 A Bug's Life(并查集)
- HDU 1829 A Bug's Life(种类并查集)
- hdu 1829 A Bug's Life (基础并查集)
- HDU 1829 A Bug's Life 并查集
- hdu 1829 A Bug's Life 并查集
- HDU 1829 A Bug's Life (并查集)
- hdu 1829 A Bug's Life 并查集
- hdu 1829 A Bug's Life ( 并查集 )
- hdu 1829 A Bug's Life 并查集
- HDU 1829 A Bug's Life (并查集)
- HDU 1829 A Bug's Life (并查集)
- HDU-1829 A Bug's Life(并查集)
- HDU 1829 A Bug's Life 并查集
- HDU 1829 A Bug's Life【种类并查集】
- UIView animateWithDuration 使用详解
- 自然语言处理(1)
- PHP date()获取系统时间不对怎么办?
- c++primer plus复合类型之共用体
- 判断文件是否存在
- HDU-1829 A Bug's Life。并查集构造,与POJ1709异曲同工!
- gitlab备份与恢复
- UE4流程控制
- 排序算法
- 浅谈ScrollView嵌套ListView及ListView嵌套的高度计算
- 分库分表的几种常见形式以及可能遇到的难题
- Go语言实现telnet远程登录
- jenkins+docker+nodejs项目的自动部署环境(案例)
- android学习(十八) 添加动画(一)淡入淡出的视图