hdu 1829 A Bug's Life 并查集
2015-07-13 08:27
369 查看
hdu1829链接:点击打开链接
本想用vector写,没写出来/衰,看了一下结题报告,哎,我真的没学会并查集。利用并查集,当根节点相同的时候,观察两点与根节点的关系 是同性还不异性,重点是在查找根节点的时候就要更新各点与爷爷的关系
code:
本想用vector写,没写出来/衰,看了一下结题报告,哎,我真的没学会并查集。利用并查集,当根节点相同的时候,观察两点与根节点的关系 是同性还不异性,重点是在查找根节点的时候就要更新各点与爷爷的关系
code:
#include<iostream> #include<algorithm> #include<stdio.h> using namespace std; int n,m; int father[2100],relation[2100];//1表示同性,0表示异性 void init(int n) { for(int i=0;i<=n;i++) { father[i]=i; relation[i]=1; } } int findd(int n) { int nn=father ; if(n==father ) return nn; father =findd(nn); relation =(relation +relation[nn]+1)%2; return father ; } void uniont(int a,int b,int aa,int bb) { father[aa]=bb; relation[aa]=(relation[a]-relation[b])%2; } int main() { //freopen("i.txt","r",stdin); int i,tt=0,t; scanf("%d",&t); while(t--) { tt++; scanf("%d%d",&n,&m); init(n); int a,b,flag=0; for(i=0;i<m;i++) { scanf("%d%d",&a,&b); if(flag) continue; int aa=findd(a); int bb=findd(b); if(aa==bb) if(relation[a]==relation[b]) flag=1; uniont(a,b,aa,bb); } printf("Scenario #%d:\n",tt); if(flag) printf("Suspicious bugs found!\n\n"); else printf("No suspicious bugs found!\n\n"); } return 0; }
相关文章推荐
- Chang My Life style
- node.js(一)
- 08、通过自定义依赖属性,用 StateTrigger 修改全局主题样式
- HTML data属性
- The reference to entity "characterEncoding" must end with the ';' delimiter (Mybatis + Mysql)
- 使用 jquery 获取一组或者单个 checkbox 的选中状态的值
- Javascript获得Url中的参数
- Javascript获得Url中的参数
- HTML5的Canvas
- 如何做好div+css的浏览器兼容性
- html--新增
- 利用HTML5实现图片的拖拽
- Skype for Business Server 2015-13-IISARR-2-发布-2-前端服务器
- CSS Font-family常用设置
- html 框架学习
- PHP output_buffering 你了解多少
- Google将Material Design带到CSS、HTML与JavaScript上
- 关于HTML5中拖放
- photoshop将psd导出div+css格式HTML(自动)
- 浅谈PHP中output_buffering