文章的意思不解释了,就是一个并查集,不过要判断下和根节点是否为同一个性别。

r[50000];     0代表同性,1代表异性,本身与本身自然的同性

按路径压缩的并查集,一般情况下 只有2层

r[x]=(r[temp]==0?r[x]:1-r[x]);     r[temp]=0 表示r[x]的 父亲节点与根节点 具有同性别那自然就不用改变r[x]

r[rb]=(r[a]==r[b]?1:0);  写下就观察出来了

写了我好久真是郁闷。

如有不对,或者其他什么建议  请指出 ,谢谢。

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int root[50000],r[50000]; // 0代表同性,1代表异性,本身与本身自然的同性
int n,m;
void init()
{int i;for(i=1;i<=n;i++){root[i]=i;r[i]=0;}
}
int find(int x)
{int temp=root[x];if(x==root[x]) return x;else{root[x]=find(root[x]);r[x]=(r[temp]==0?r[x]:1-r[x]);return root[x];}
}
void Union(int a,int b,int ra,int rb)
{root[rb]=ra;r[rb]=(r[a]==r[b]?1:0);
}
int main()
{int t;scanf("%d",&t);for(int number=1;number<=t;number++){printf("Scenario #%d:\n",number);scanf("%d%d",&n,&m);init();int a,b,i;int flag=0;for(i=1;i<=m;i++){scanf("%d%d",&a,&b);if(flag==0){int ra=find(a);int rb=find(b);if(ra==rb&&r[a]==r[b])flag=1;else Union(a,b,ra,rb);}}if(flag==1) printf("Suspicious bugs found!\n");else printf("No suspicious bugs found!\n");printf("\n");}
}

poj 2492 A Bug's Life相关推荐

  1. POJ 2492 A Bug's Life (带权并查集 向量偏移)

    题意 : 给你 n 只虫且性别只有公母, 接下来给出 m 个关系, 这 m 个关系中都是代表这两只虫能够交配, 就是默认异性, 问你在给出的关系中有没有与异性交配这一事实相反的, 即同性之间给出了交配 ...

  2. POJ 2492 A Bug's Life 带权并查集

    题意: 思路: mod2 意义下的带权并查集 如果两只虫子是异性恋,它们的距离应该是1. 如果两只虫子相恋且距离为零,则它们是同性恋. (出题人好猥琐啊) 注意: 不能输入一半就break出来.... ...

  3. A Bug‘s Life POJ 2492 加权并查集

    A Bug's Life POJ 2492 加权并查集 传送门:http://poj.org/problem?id=2492 Description Background Professor Hopp ...

  4. POJ - 2492 种类并查集

    思路:保存每个点与其父节点的关系,注意合并和路径压缩即可. AC代码 #include <cstdio> #include <cmath> #include <cctyp ...

  5. POJ 2492 并查集,带权或带偏移量并查集 【例题详解】

    分析这道题,我们可以得出,假如a,b,c三只虫子,a和b可以交配,b和c也可以交配,那么a和c一定是同行,因为他们和同一个异性交配了.所以我们可以把关系抽象成图,在ab之间,bc之间各连一条线长度为1 ...

  6. POJ 1703 Find them, Catch them(并查集高级应用)

    POJ 1703 Find them, Catch them(并查集高级应用) 手动博客搬家:本文发表于20170805 21:25:49, 原地址https://blog.csdn.net/sunc ...

  7. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  8. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  9. 并查集入门+初级专题训练

    介绍   摘自罗勇军,郭卫斌的<算法竞赛入门到进阶>上的说明:   并查集(Disjoint Set)是一种非常精巧而且食用的数据结构,它主要用于处理一些不相交集合的合并问题.经典的例子有 ...

最新文章

  1. python怎么学好-怎么短时间学好python
  2. 后台开发人员面试内容——数据库(二)
  3. VTK:参数化超椭球用法实战
  4. Web前端开发笔记——第三章 CSS语言 第六节 CSS定位
  5. 数学沉思录:古今数学思想的发展与演变 (Mario Livio 著)
  6. MapReduce经典案例——统计单词数
  7. postgresql 字符串转整数 int、integer
  8. ABySS非root权限安装
  9. 农用圆形打捆机行业调研报告 - 市场现状分析与发展前景预测
  10. python程序员月薪-据说做Python程序员,都月薪上万?
  11. image 搜索docker_docker images命令-列出image
  12. Java实现的各种排序算法
  13. C++ Primer 5th - 1.1 编写一个简单的C++程序
  14. 基于C++实现家谱管理系统
  15. FPGA学习积累之AM调制解调(解调部分没搞太明白)
  16. python推箱子小游戏_python实现推箱子游戏
  17. 2022.8.11SAP目前为止学习总结
  18. vue 仿外卖app-数据mock部分
  19. 记录一款绿色便携的sqlist3数据库编辑工具SQLiteSpy
  20. 教你用Python画了一棵圣诞树

热门文章

  1. MFC六大核心机制之一:MFC程序的初始化
  2. 深入理解netfilter框架|经典PDF
  3. 老司机给我们解读 Spring Boot 最流行的 16 条实践
  4. 《微服务架构设计模式》总结,文末送书
  5. Easy Tech:什么是I帧、P帧和B帧?
  6. 【线上分享】云游戏面对低延迟挑战的实践
  7. nginx源码初读(8)--让烦恼从数据结构开始(ngx_event)
  8. 推荐ReactNative脚手架工具
  9. Redis持久化 RDB和AOF 比较与选择
  10. 我又来说Git了, Git 与 SVN 大对比!