A Bug's Life

                                                   
Find them, Catch them

都是并查集构造的题,不久前MQL学长给我们拉过POJ上那道题,稍微复杂点,过了这么久竟然差不多忘完了,比赛的时候由队友在做这道题,我一直在看其他的题,在确定其他的题都不好做而且这个题好几个队都过了所以我们打算攻一攻这个题,只是依稀记得要用一个数组存与其对立的点,那么我们将与其对立的点都用并查集连起来,直接找是否有冲突就可以了。还好在思路不是很混乱的时候做出了这道题,不过比赛还是被学弟虐菜了。。。。。

题意:2种性别的病毒,为了验证异性相吸原则,做了个实验,然后给出两两配对的关系,求是否有冲突。

思路:和POJ1709那道类似,用一个diff数组存与其对立的病毒,当然,初始化可以为-1或本身(自己不可能和自己对立),然后只需在输入的时候将未赋值的赋值,然后将与这个病毒对立的病毒和当前对立的病毒用并查集连接起来就行了,只要存在冲突,肯定是可以判断的。

  1. int find(int x)
  2. {
  3. return f[x]==x?x:f[x]=find(f[x]);
  4. }
  5. int main()
  6. {
  7. int t,n,m;
  8. scanf("%d",&t);
  9. int t1=1;
  10. while(t--)
  11. {
  12. scanf("%d%d",&n,&m);
  13. int u,v,ff=0;
  14. for(int i=1;i<=n;i++) p[i]=i,f[i]=i;
  15. for(int i=0;i<m;i++)
  16. {
  17. scanf("%d%d",&u,&v);
  18. if(p[u]==u) p[u]=v;
  19. if(p[v]==v) p[v]=u;
  20. int u1=find(u),v1=find(v);
  21. int u2=find(p[u]),v2=find(p[v]);
  22. if(u2==v2||u1==v1) ff=1;
  23. f[u2]=v1;
  24. f[v2]=u1;
  25. }
  26. printf("Scenario #%d:\n",t1++);
  27. if(ff) puts("Suspicious bugs found!");
  28. else puts("No suspicious bugs found!");
  29. puts("");//注意输出问题
  30. }
  31. return 0;
  32. }

HDU-1829 A Bug's Life。并查集构造,与POJ1709异曲同工!的更多相关文章

  1. hdu - 1829 A Bug's Life (并查集)&&poj - 2492 A Bug's Life && poj 1703 Find them, Catch them

    http://acm.hdu.edu.cn/showproblem.php?pid=1829 http://poj.org/problem?id=2492 臭虫有两种性别,并且只有异性相吸,给定n条臭 ...

  2. hdu 1829 A Bug's Life(并查集)

                                                                                                    A Bu ...

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

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

  4. hdu 5458 Stability(树链剖分+并查集)

    Stability Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65535/102400 K (Java/Others)Total ...

  5. [HDU 3712] Fiolki (带边权并查集+启发式合并)

    [HDU 3712] Fiolki (带边权并查集+启发式合并) 题面 化学家吉丽想要配置一种神奇的药水来拯救世界. 吉丽有n种不同的液体物质,和n个药瓶(均从1到n编号).初始时,第i个瓶内装着g[ ...

  6. 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 ...

  7. hdu 1829 A Bug's Life(分组并查集(偏移量))

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  8. HDU 1829 A Bug's Life 【带权并查集/补集法/向量法】

    Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes ...

  9. HDU 1829 - A Bug's Life

    Problem Description Background Professor Hopper is researching the sexual behavior of a rare species ...

随机推荐

  1. linux学习笔记汇总

    linux 文件系统是采用级层树状的目录结构,采用"/"根目录的方式 目录结构: / 根目录           |---root: 存放root用户相关的文件          ...

  2. 自定义消息中如果需要定义WPARAM和LPARAM,该怎么使用和分配?

    写Windows程序不可避免要使用自定义的消息,也就是从WM_USER开始定义的消息.在定义一个消息后,往往我们还要定义针对该消息的WPARAM甚至是LPARAM.WPARAM和LPARAM是什么,可 ...

  3. 企业CIO、CTO必读的34个经典故事

    一. 用人之道 去过庙的人都知道,一进庙门,首先是弥陀佛,笑脸迎客,而在他的北面,则是黑口黑脸的韦陀.但相传在很久以前,他们并不在同一个庙里,而是分别掌管不同的庙.弥乐佛热情快乐,所以来的人非常多,但 ...

  4. ios UnitTest 学习笔记1

    一.运行第一个单元测试: 1.在Xcode 5中新建一个工程默认自带一个单元测试的文件夹,IDE自动生成了一个实现XCTestCase的.m文件,里面有一个失败测试(早期版本中实现的是SenTestC ...

  5. js 分组数组

    思路: 1.先将数组按照一定规则排序: 2.再拆分数组到Map中,按Key分类: 3.再从Map中遍历取出要显示的内容: sortBroadList: function (broadcastList) ...

  6. 提取循环中包含continue的语句封装成方法

    demo如下: private void button1_Click(object sender, EventArgs e) { ;i<;i++) { if (!a(i)) { continue ...

  7. ios 团购信息客户端demo(二)

    接上一篇,这篇我们对我们的客户端加入KissXML,MBProgressHUD,AQridView这几个库,首先我们先加入KissXML,这是XML解析库,支持Xpath,可以方便添加更改任何节点.先 ...

  8. PAT 乙级 1033

    题目 题目地址:PAT 乙级 1033 题解 本题一直有一分的样例点过不了,原因在于用了cin接收输入的字符…… 问题在于:如果用cin输入,无法接收无坏键的情况的输入,需要getline作为输入:这 ...

  9. linux运维中常用的指令

    一.终端中常用的快捷键 man界面中的快捷键: ?keyword                 向上搜索关键词keyword,n向下搜索,N继续向上搜索 /keyword   向下搜索关键词keyw ...

  10. 条款38:通过复合塑模has-a或“根据某物实现出”

    NOTE: 1.复合(composition)的意义和public继承完全不同. 2.在应用域(application domain),复合意味 has-a(有一个). 在实现域(implementa ...