杭电 1829 A Bug's Life 经典并查集

原创 2012年03月31日 16:32:14

    卧槽,写这道题写了两天啊,,,两天啊,,,容易吗。。。搞基的bug伤不起啊。。。。并查集扩展,题目:

A Bug's Life

Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3921    Accepted Submission(s): 1266


Problem Description
Background 
Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different genders and that they only interact with bugs of the opposite gender. In his experiment, individual bugs and their interactions were easy to identify, because numbers were printed on their backs. 

Problem 
Given a list of bug interactions, decide whether the experiment supports his assumption of two genders with no homosexual bugs or if it contains some bug interactions that falsify it.
 

Input
The first line of the input contains the number of scenarios. Each scenario starts with one line giving the number of bugs (at least one, and up to 2000) and the number of interactions (up to 1000000) separated by a single space. In the following lines, each interaction is given in the form of two distinct bug numbers separated by a single space. Bugs are numbered consecutively starting from one.
 

Output
The output for every scenario is a line containing "Scenario #i:", where i is the number of the scenario starting at 1, followed by one line saying either "No suspicious bugs found!" if the experiment is consistent with his assumption about the bugs' sexual behavior, or "Suspicious bugs found!" if Professor Hopper's assumption is definitely wrong.
 

Sample Input
2 3 3 1 2 2 3 1 3 4 2 1 2 3 4
 

Sample Output
Scenario #1: Suspicious bugs found! Scenario #2: No suspicious bugs found!
Hint
Huge input,scanf is recommended.
ac代码:

#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
const int N=12010;
int p[N],relation[N];
int find(int x){
	int px=p[x];
	if(x==p[x])return x;
	p[x]=find(p[x]);
	relation[x]=(relation[x]+relation[px])%2;
	return p[x];
}
int main(){
	//freopen("in.txt","r",stdin);
	int numcase,k=0;
	scanf("%d",&numcase);
	while(numcase--){
	  int n,m;
	  scanf("%d%d",&n,&m);
	  int a,b,flag=0;
	  for(int i=1;i<=n;++i){
	    p[i]=i;
		relation[i]=0;
	  }
	  while(m--){
	    scanf("%d%d",&a,&b);
		if(flag==1)
			continue;
		int roota=find(a);
		int rootb=find(b);
		if(roota==rootb){
			if(relation[a]==relation[b]){
			  flag=1;
			}
		}
		else{
		  p[rootb]=roota;
		  relation[rootb]=((relation[a]+1)%2+relation[b])%2;
		}
	  }
	  printf("Scenario #%d:\n",++k);
	  if(flag)puts("Suspicious bugs found!");
	  else puts("No suspicious bugs found!");
	  puts("");
	}
	return 0;
}


并查集——A bug s life

A Bug's Life                                              Time Limit: 15000/5000 MS (Java/Others)  ...
  • x_y_q_
  • x_y_q_
  • 2016年04月13日 23:41
  • 134

hdu 1829 A Bug's Life(分组并查集)

A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...
  • ling_du
  • ling_du
  • 2015年07月22日 15:28
  • 245

HDU 1829 A Bug's Life(基础种类并查集)

链接: http://acm.hdu.edu.cn/showproblem.php?pid=1829 原题: Problem Description Background  Professo...
  • qq_36782366
  • qq_36782366
  • 2017年07月21日 13:10
  • 51

HDU 1829 A Bug's Life(种类并查集)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1829 A Bug's Life Time Limit: 15000/5000 MS...
  • u014705673
  • u014705673
  • 2015年07月05日 10:26
  • 401

hdu 1829 A Bug's Life(种类并查集)

A Bug's Life Problem Description Background  Professor Hopper is researching the sexual behavior o...
  • a709743744
  • a709743744
  • 2016年03月08日 22:14
  • 254

HDU 1829 A Bug's Life(种类并查集)

A Bug’s Life Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other...
  • usher_ou
  • usher_ou
  • 2017年04月13日 22:55
  • 160

HDU 1829 A Bug's Life【种类并查集】

A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To...
  • hurmishine
  • hurmishine
  • 2016年10月06日 21:39
  • 620

HDU 1829 A Bug's Life(基础种类并查集)

题目分析 基础的种类并查集,一直想写,但是苦于不会,今天找了个简单的练手。种类并查集除了需要维护fa[]数组,同时还要维护关系数组,这里面只有2种关系,一种是互斥,一种是不互斥,这样已经很明显了,...
  • chen_ze_hua
  • chen_ze_hua
  • 2016年07月06日 20:11
  • 92

HDU 1829 A Bug's Life(种类并查集)

题意: 给你n 个人,m 个操作, 每个操作告诉你两个人不是一个性别的,问你能否给所有人分成两组不冲突。 思路: 加权并查集取模变成种类并查集。 好不爽,个人赛时竟然花费了一小时在一道简单的种...
  • aozil_yang
  • aozil_yang
  • 2017年03月19日 01:16
  • 279

杭电3635————并查集的应用(路径压缩)

Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T...
  • u013548531
  • u013548531
  • 2014年08月19日 21:00
  • 640
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:杭电 1829 A Bug's Life 经典并查集
举报原因:
原因补充:

(最多只允许输入30个字)