博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
种类并查集,TOJ(1706)
阅读量:6302 次
发布时间:2019-06-22

本文共 2739 字,大约阅读时间需要 9 分钟。

题目链接:

很类似Poj的一道帮派的问题,记得找到的可疑的关系,不要将集合刷新就可以了。

1706.  
A Bug's Life

Time Limit: 5.0 Seconds   
Memory Limit: 65536K
Total Runs: 1190   
Accepted Runs: 360   
Multiple test files

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

 

23 31 22 31 34 21 23 4

 

Sample Output

 

Scenario #1:Suspicious bugs found!Scenario #2:No suspicious bugs found!

 

Hint

Huge input,scanf is recommended.

Source: 

#include 
int father[2010];int kind[2010];int Find_Set(int x){ if(x!=father[x]) { int tmp = father[x]; father[x] = Find_Set(father[x]); kind[x] = (kind[x]+kind[tmp])%2; } return father[x];}int main(){ int t; int cases=1; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { father[i] = i; kind[i] = 0; } bool flag = true; while(m--) { int x,y; scanf("%d%d",&x,&y); int fx,fy; fx = Find_Set(x); fy = Find_Set(y); if(fx!=fy) { father[fy] = fx; kind[fy] = (kind[x]-kind[y]+1)%2; } else { if(kind[x]==kind[y]) flag = false; } } if(flag) printf("Scenario #%d:\nNo suspicious bugs found!\n\n",cases++); else printf("Scenario #%d:\nSuspicious bugs found!\n\n",cases++); } return 0;}

 

转载于:https://www.cnblogs.com/TreeDream/p/5720947.html

你可能感兴趣的文章
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>
两程序员不同境遇:少抱怨 多解决问题
查看>>
字符编码
查看>>
企业应用:应用层查询接口设计
查看>>
浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
查看>>
nfd指令的详细说明
查看>>
安装VisualSvn Server时遇到的问题
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
虚拟机备份克隆导致SQL SERVER 出现IO错误案例
查看>>
人脸识别 开放书籍 下载地址
查看>>
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
如何快速获取ADO连接字符串
查看>>
AspNetPager控件的最基本用法
查看>>
sessionKey
查看>>