POJ 2492 A Bug's Life(并查集)
2014-03-20 19:34
344 查看
同性恋的虫子~~
大神的代码都看不懂%>_<%
wa了几次后,学《挑战程序设计竞赛》食物链的做法
1~n表示一种性别,n+1~2*n表示另一种性别
如果x虫子和y虫子搞(...),就看x和y是不是在同一个集合,如果是的话就有特殊的虫子
不是的话就合并x和y+n,x+n和y
大神的代码都看不懂%>_<%
wa了几次后,学《挑战程序设计竞赛》食物链的做法
1~n表示一种性别,n+1~2*n表示另一种性别
如果x虫子和y虫子搞(...),就看x和y是不是在同一个集合,如果是的话就有特殊的虫子
不是的话就合并x和y+n,x+n和y
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> #include<queue> #include<map> #include<set> using namespace std; #define mxn 4020 #define ym 100200 #define inf 0x3f3f3f3f #define eps 1e-8 #define LL long long #define ULL unsigned long long #define MP make_pair #define pb push_back int fa[mxn]; void init() { for( int i = 0; i < mxn; ++i ) fa[i] = i; } int find( int x ) { if( fa[x] != x ) fa[x] = find( fa[x] ); return fa[x]; } bool same( int u, int v ) { int fu = find( u ); int fv = find( v ); return fu == fv; } void un( int u, int v ) { int fu = find( u ); int fv = find( v ); fa[fu] = fv; } int main() { int cas; int kk = 1; scanf( "%d", &cas ); while( cas-- ) { init(); int n, m; scanf( "%d%d", &n, &m ); bool flag = 1; int u, v; for( int i = 1; i <= m; ++i ) { scanf( "%d%d", &u, &v ); if( flag ) { if( same( u, v ) || same( v + n, u + n ) ) flag = 0; else { un( u, v + n ); un( v, u + n ); } } } printf( "Scenario #%d:\n", kk++ ); if( flag ) printf( "No suspicious bugs found!\n\n" ); else printf( "Suspicious bugs found!\n\n" ); } return 0; }
相关文章推荐
- java web开发:ajax技术(五)——锋利的JQuery
- HTML5跨平台开发环境配置
- js_day22--js DOM编程(window对象3+猜拳游戏)
- 你可能不知道的5种 CSS 和 JS 的交互方式
- JQuery框架技术
- 关于html中table单元格的填充
- javascript中的闭包
- JavaScript trim函数大赏
- javascript学习手记(Html)meta标签之详解
- Page cache和buffer cache的区别与联系
- 移动开发必备的浏览器插件--user agent switcher
- “忠于原文”的前端转码问题
- Jquery插件--easyUI属性汇总
- svn: Could not use external editor to fetch log message; 问题解决
- HTML中的特殊符号
- html5关联:连接模型,一个新的东西,呵呵
- JSON数据格式
- 在jsp页面上几种取action传入值得几种方法
- 谈下html5里面p标签的一些见解,呵呵,不是很深奥的东西
- 邮件和手机的js 正则校验