A Bug's Life - poj2492
Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
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
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
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
Sample Output
Suspicious bugs found!
Scenario #2:
No suspicious bugs found!
Hint
Huge input,scanf is recommended.
#include<iostream>
#include<cstdio> using namespace std; #define N 2010 int f[N], v[N]; // v 数组存的是下标与其根结点的性别状态,0代表同性,1代表异性,f存的是下标的根结点 int found(int x)
{
int k = f[x]; if(f[x] != x)
{
f[x] = found(k); // 寻找根结点
v[x] = (v[x]+v[k])%; // 根结点在变,v数组其与根结点的状态也要变,如果与其原先
}
return f[x];
}
int main()
{
int t, a, b, n, m; cin >> t; for(int i = ; i <= t; i++)
{
cin >> n >> m;
int ok = ; for(int j = ; j <= n; j++)
f[j] = j, v[j] = ; while(m--)
{
cin >> a >> b; if(ok) continue; int na = found(a), nb = found(b); if(na == nb && (v[a]+)% != v[b]) // 如果两个数之前已经有了联系,并且联系不是正常的,同性恋(相等代表正常,ok置为1,就有可疑对象发现
ok = ;
if(na != nb)
{
f[na] = nb; v[na] = (-v[a]+v[b])%; // 如果之前两个没有联系,就把两个数的根结点联系起来(根据已知其与根结点状态~
}
}
if(i != )
printf("\n");
printf("Scenario #%d:\n", i);
if(ok)
printf("Suspicious bugs found!\n");
else
printf("No suspicious bugs found!\n");
}
printf("\n"); // 格式控制,虽然我也没看见题上哪句话是这意思
return ;
}
之前一直不太懂什么意思,什么算同性恋,是opposite gender?醉了,是与当前已知条件矛盾。一个人和另一个人有关系就在一个树上,有点关系的都在一条树上。一棵树上应该与根结点状态一致,否则就是同性恋,不在一棵树上随便状态。。和食物链是不是一样,但是我根本都没想食物链的事。。
头脑简单四肢发达的生物,想不出来一直想~
A Bug's Life - poj2492的更多相关文章
- J - A Bug's Life - poj2492
这个题目很有意思啊,有一些bug生物(肯定是程序员养的),有人观察他们的生活习惯,观察他们之间是否有同性恋关系,比如ab发生关系,bc发生关系,ab发生关系...产生了同性恋了,你需要判断一下这种关系 ...
- [poj2492]A Bug's Life(并查集+补集)
A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 34678 Accepted: 11339 D ...
- POJ2492 A Bug's Life
Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 33833 Accepted: 11078 Description Ba ...
- poj2492 A Bug's Life【并查集】
Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assume ...
- poj2492 A Bug's Life(带权并查集)
题目链接 http://poj.org/problem?id=2492 题意 虫子有两种性别,有n只虫子,编号1~n,输入m组数据,每组数据包含a.b两只虫子,表示a.b为不同性别的虫子,根据输入的m ...
- POJ2492:A Bug's Life(种类并查集)
A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 45757 Accepted: 14757 题 ...
- POJ2492 A Bug's Life —— 种类并查集
题目链接:http://poj.org/problem?id=2492 A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Su ...
- POJ2492 A Bug's Life 带权并查集
分析:所谓带权并查集,就是比朴素的并查集多了一个数组,记录一些东西,例如到根的距离,或者和根的关系等 这个题,权数组为relation 代表的关系 1 和父节点不同性别,0,和父节点同性别 并查集一 ...
- poj2492 A Bug's Life【基础种类并查集】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4298148.html ---by 墨染之樱花 题目链接:http://poj.org/pr ...
随机推荐
- 16/7/8_PHP-书写规范 PHP Coding Standard
变量命名规范这里感觉 打算采用 匈牙利命名法+驼峰法命名,因为 PHP是弱类型语言,很多时间因为忽略了变量类型而导致犯一些低级错误.所以在前面加上类型名有助于更好的理解代码. 下载是转载 PHP书写规 ...
- Support Vector Machine(4):SMO算法
经过上一篇的推导,我们的优化问题已经化为了如下等价形式: 我们在不考虑任何约束条件的情况下去想这个minimize的问题,可以将其抽象为: SMO算法的思想是,每次迭代,只改变一个参数,而将n-1个参 ...
- C#后台去除字符串最后一个字符
string str = "a,b,c,"; int length = str.length; //获取字符串长度 str = str.substring(0,length-1); ...
- 使EasyUI的window、panel、dialog 不被拖出页面
function easyuiPanelOnMove(left, top) { var l = left; var t = top; if (l < 1) { l = 1; } ...
- JavaScript实现的发布/订阅(Pub/Sub)模式
JavaScript实现的发布/订阅(Pub/Sub)模式 时间 2016-05-02 18:47:58 GiantMing's blog 原文 http://giantming.net/java ...
- 《JAVA设计模式》之解释器模式(Interpreter)
在阎宏博士的<JAVA与模式>一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个 ...
- struts框架的一些注意点
1.Struts.xml文件中<include file="">标签的运用 用法:此标签引用配置文件,Struts2提供了一个默认的struts.xml文件,当此配置文 ...
- CSS实现背景图片屏幕自适应
在做登陆页面等的首页的时候,经常会遇到需要放一张背景大图的情况,并且需要图片按比例缩放,来适应不同屏幕的大小. html代码如下: <!DOCTYPE html> <html lan ...
- 最小生成树基础算法(Prim + Krustal)
最小生成树问题的引入: 对于一个无向图G(V, E),需要用图中的n - 1条边连接图中的n个顶点并且不产生回路所产生的树就叫做生成树,其中权值总和最小的就是最小生成树. 如何求解最小生成树问题: 譬 ...
- jvm学习(5) 对象的创建与结构
上图表明:jvm虚拟机位于操作系统的堆中,并且,程序员写好的类加载到虚拟机执行的过程是:当一个classLoder启动的时候,classLoader的生存地点在jvm中的堆,然后它会去主机硬盘上将A. ...