UVa 1160 X-Plosives(并查集)
2014-04-29 19:10
288 查看
题目链接:UVa 1160 X-Plosives
把元素当成顶点,把化合物当成边,当整个图存在环的时候,组成环的边对应的化合物是a powerful explosive,使用并查集判断加入一条边后是否存在环,如果存在,那么这条边不能加入。并查集一个集合中的点两两连通,如果两个元素已经属于一个集合,那么这两个元素间再加一条边肯定会出现环。
把元素当成顶点,把化合物当成边,当整个图存在环的时候,组成环的边对应的化合物是a powerful explosive,使用并查集判断加入一条边后是否存在环,如果存在,那么这条边不能加入。并查集一个集合中的点两两连通,如果两个元素已经属于一个集合,那么这两个元素间再加一条边肯定会出现环。
#include <iostream> #include <cstdio> using namespace std; const int MAX_N = 100000 + 100; int p[MAX_N]; int _find(int x) { return x == p[x] ? x : (p[x] = _find(p[x])); } int main() { int a, b, u, v, res; while(scanf("%d", &a) != EOF) { res = 0; for(int i = 0; i < MAX_N; i++) p[i] = i; while(a != -1) { scanf("%d", &b); u = _find(a); v = _find(b); if(u == v) res++; else p[u] = v; scanf("%d", &a); } printf("%d\n",res); } return 0; }
相关文章推荐
- 【管理心得之二十二】小人物 仰视 大授权
- 用eclipse在windows下搭建cocos2d-x开发环境
- Fedora 64 运行eclipse android
- 设计模式第二站--策略模式
- 硬盘安装Fedora20过程记录
- Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本
- this指针
- codes2
- codes
- java排列组合算法
- OC语言自学《十一》---- OC(内存管理知识总结)
- 世界是数字的
- .net环境下的缓存技术-转载!
- poj2421 最小生成树 克鲁斯
- 手游产品经理初探(一)logo的印象推广很重要
- 网页建站的路径问题
- 九度题目1024:畅通工程 2007年浙江大学计算机及软件工程研究生机试真题
- OpenCV2马拉松第6圈——非线性滤波
- CALayer之anchorPoint分析
- 《算法导论》笔记 第18章 18.2 对B树的基本操作