HDU 1829 A Bug's Life (并查集)
2015-08-05 19:07
435 查看
这道题的思路不是自己想的,参考了别人的代码。数组par为并查集数组,pre为辅助数组。pre[i]为i个体之前对应的异性,与当前的异性属于同性,因此合并。然后就是查看是否同一个根节点啦~
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int par[3000], pre[3000]; int n, m; void init() { for(int i = 1; i <= n; i++) par[i] = i; } int find1(int x) { int r = x, j; while(r != par[r]) r = par[r]; while(x != r) j = par[x], par[x] = r, x = j; return r; } void unite(int x, int y) { x = find1(x); y = find1(y); par[x] = y; } int main() { int t, a, b, x = 0; scanf("%d", &t); while(t--) { scanf("%d%d", &n, &m); init(); memset(pre, 0, sizeof pre); int f = 1; for(int i = 0; i < m; i++) { scanf("%d%d", &a, &b); if(find1(a) == find1(b)) f = 0; if(pre[a] == 0) pre[a] = b; else unite(pre[a], b); if(pre[b] == 0) pre[b] = a; else unite(pre[b], a); } if(! f) printf("Scenario #%d:\nSuspicious bugs found!\n", ++x); else printf("Scenario #%d:\nNo suspicious bugs found!\n", ++x); printf("\n"); } return 0; }
相关文章推荐
- 学习angularjs时遇到 XX is not a function
- javascript总结
- Hello JSP!——基础语法篇
- 高质量CSS
- 利用CSS3的transition属性实现滑动效果
- 设置google浏览器不缓存JS
- 4 classes in Bootstrap Grid system
- yii jquery折叠、弹对话框、拖拽、滑动条、ol和ul列表、局部内容切换
- 根据数据显示行的样式
- CSS的font-size属性及其em值的使用
- @keyframes规则实现多重背景的CSS动画
- javascript 的 "!function" 是什么意思?
- js实现全选反选
- 时间处理组件moment.js
- 详解HTML的<input> 标签及其禁用方法
- HTML5吧!少年
- Javascript中this关键字详解
- POJ1305(Fermat vs. Pythagoras 毕达哥拉斯三元组解不定方程)
- dom-drag.js
- 关于extjs下载excel文件使用到Ajax异步请求