思路:见代码吧。

#include <stdio.h>
#include <string.h>
#include <set>
#include <vector>
#include <queue> using namespace std;
const int maxn=;
int n,m;
int father[maxn];
int num[maxn]; //num[i]表示
int rel[maxn]; //rel[i]表示它与根节点的关系,0代表同性,1代表异性 void init(){
for(int i=;i<=n;i++){
father[i]=i;
num[i]=;
rel[i]=;
}
} //查找根节点时,同时更新它与根节点的关系。这里要注意的是:先更新玩父节点,再更新自己的。
int find_root(int x){
int fa;
if(father[x]==x)
return x;
fa=find_root(father[x]);
rel[x]=(rel[x]+rel[father[x]])%;
father[x]=fa;
return father[x];
}
void Union(int a,int b,int x,int y){
if(num[x]>num[y]){
father[y]=x;
num[x]+=num[y];
//更新y与根节点x的关系
rel[y]=(rel[b]++rel[a])%; //刚开始这里写错了,忘加了rel[a]。。。下面忘加了rel[b]。。。
}
else{
father[x]=y;
num[y]+=num[x];
//更新x与根节点y的关系
rel[x]=(rel[a]++rel[b])%; }
} int main()
{
int t,a,b,flag;
scanf("%d",&t);
for(int q=;q<=t;q++){
scanf("%d%d",&n,&m);
init();
flag=;
for(int i=;i<=m;i++){
scanf("%d%d",&a,&b);
if(flag)
continue;
int x=find_root(a);
int y=find_root(b);
if(x!=y){
Union(a,b,x,y);
}
else{
//当a、b父节点相同时:
//t表示a、b之间的关系,若关系为0,就表示它们是同性
//也可以判断两者与父节点性别的区别是相同的,即rel[a]==rel[b]那么这两个为同性
int t=(rel[b]+rel[a])%;
if(t==){
flag=;
}
}
}
printf("Scenario #%d:\n",q);
if(flag){
printf("Suspicious bugs found!\n");
}
else{
printf("No suspicious bugs found!\n");
}
printf("\n");
}
return ;
}

HDU 1829 A Bug's Life(种类并查集)的更多相关文章

  1. hdoj 1829 A bug's life 种类并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1829 并查集的一个应用,就是检测是否存在矛盾,就是两个不该相交的集合有了交集.本题就是这样,一种虫子有 ...

  2. 【POJ】2492 A bug's life ——种类并查集

    A Bug's Life Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 28211   Accepted: 9177 De ...

  3. POJ2492 A Bug's Life —— 种类并查集

    题目链接:http://poj.org/problem?id=2492 A Bug's Life Time Limit: 10000MS   Memory Limit: 65536K Total Su ...

  4. hdu1829A Bug's Life(种类并查集)

    传送门 关键在于到根节点的距离,如果两个点到根节点的距离相等,那么他们性别肯定就一样(因为前面如果没有特殊情况,两个点就是一男一女的).一旦遇到性别一样的,就说明找到了可疑的 #include< ...

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

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1829 A Bug's Life Time Limit: 15000/5000 MS (Java/Oth ...

  6. 【进阶——种类并查集】hdu 1829 A Bug's Life (基础种类并查集)TUD Programming Contest 2005, Darmstadt, Germany

    先说说种类并查集吧. 种类并查集是并查集的一种.但是,种类并查集中的数据是分若干类的.具体属于哪一类,有多少类,都要视具体情况而定.当然属于哪一类,要再开一个数组来储存.所以,种类并查集一般有两个数组 ...

  7. hdu 1182 A Bug's Life(简单种类并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1829 题意:就是给你m条关系a与b有性关系,问这些关系中是否有同性恋 这是一道简单的种类并查集,而且也 ...

  8. A Bug's Life(种类并查集)(也是可以用dfs做)

    http://acm.hdu.edu.cn/showproblem.php?pid=1829   A Bug's Life Time Limit:5000MS     Memory Limit:327 ...

  9. POJ2492:A Bug's Life(种类并查集)

    A Bug's Life Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 45757   Accepted: 14757 题 ...

随机推荐

  1. 《shell下sort排序命令的使用》

    首先建立一个文件,很乱,没有规律: 正排序: 倒排序: Uniq 删除文件中的重复行:用此命令要先对文件进行排序. 对文件冗余,只要文件所有重复的字符显示一次: 显示1-7,不重复的行: 只显示1-7 ...

  2. ARM公布“物联网”嵌入式mbed OS系统软件平台

    继ARM公司发布了为嵌入式微控制器设计的Cortex-M7架构处理器,ARM又公布了专为廉价低功耗“物联网”设计的新版软件及系统平台,以加速物联网设备的发展及部署.该软件为基于ARM现有Cortex- ...

  3. 理解 pkg-config 工具

    引用了别人的文章:http://www.chenjunlu.com/2011/03/understanding-pkg-config-tool/ 你在 Unix 或 Linux 下开发过软件吗?写完一 ...

  4. MySQL 性能优化

    内容简介:这是一篇关于mysql 性能,mysql性能优化,mysql 性能优化的文章.网上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与负责,同样的设置 ...

  5. Linux 本地yum源搭建和网络yum源搭建

    一.本地yum源搭建 首先挂载上光盘 [root@www /]# mount /dev/cdrom /media/cdrom/ 系统默认已经安装了可使用yum的软件包,所以可以直接配置: [root@ ...

  6. 生成动态前缀且自增号码的Oracle函数

    create or replace Function GetInvitationNO(prev varchar2, num1 varchar2, num2 varchar2, sessionSetti ...

  7. Mongodb地理空间索引

    1.索引: 建立索引既耗时也费力,还需要消耗很多资源.使用{"bakckground":true}选项可以使这个过程在后台完成,同时正常处理请求.如果不包括background 这 ...

  8. 自定义视图(继承View)

    前言 Android提供了丰富的控件,但是有时候还是不能满足自己的需求,这时候就需要自定义视图了,自定义视图分为几种,一种为继承为View的,一种为继承于ViewGroup的.继承于View的需要我们 ...

  9. WPF与DevExpress之旅-序言

    随着.NET技术的发展,从之前的WINFORM转向到WPF是我们技术改革的必然趋势.WPF能给人带来震撼的视觉体验,也能更加规范我们的开发模式,与传统的WINFORM开发来说具有革命性的意义.DevE ...

  10. jQuery对象和DOM对象的互相转换【 转】

    jQuery对象转换为dom对象 只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的 ...