HDU 1829 A Bug's Life
2015-05-07 23:05
330 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1829
分组并查集典型例子。
具体可参考《挑战程序设计竞赛》并查集专题或POJ 食物链
分组并查集典型例子。
具体可参考《挑战程序设计竞赛》并查集专题或POJ 食物链
#include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<iostream> #include<algorithm> #include<sstream> #include<fstream> #include<vector> #include<map> #include<stack> #include<list> #include<set> #include<queue> #define LL long long #define lson l,m,rt<<1 #define rson m+1,r,rt<<1 | 1 using namespace std; const int maxn=1000005,inf=1<<29; int n,m,t,flag; int fa[maxn],vis[maxn],in[maxn]; int Find(int x) { if(fa[x]==x) return x; return fa[x]=Find(fa[x]); } void Merge(int x,int y) { x=Find(x); y=Find(y); if(x!=y) fa[y]=x; } bool same(int x,int y) { return Find(x)==Find(y); } int main() { int Case=1; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); //编号1~n为男,n+1~2*n为女 for(int i=0;i<=2*n;i++) fa[i]=i; flag=0; while(m--) { int x,y; scanf("%d%d",&x,&y); if(same(x,y)) flag=1; Merge(x,n+y);//如果x为男,则y为女 Merge(n+x,y);//如果y为男,则x为女 } printf("Scenario #%d:\n",Case++); if(flag) printf("Suspicious bugs found!\n\n"); else printf("No suspicious bugs found!\n\n"); } // scanf("%d",&n); return 0; }
相关文章推荐
- 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 Poj 2492 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(并查集+偏移向量)