今天刚发现,之前做的并查集只是贴模板基本就能过,题意改变一点,自己还是不懂,其实我还没入门呢。。。

题意:食物链,A吃B,B吃C,C吃A,输入m组数据:

1 a b:a 和 b 是同一类

2 a b:a吃b

判断这m组数据有几句是假话。

假话条件:

1)在2的情况下,a == b;

2)a > n || b > n;

3)和前面的语句冲突;

思路:推荐一篇好的博客:http://cavenkaka.iteye.com/category/217940

其实在这里才明白Rank[]数组的意义,表示的是x 和 p[x] 的关系;博客挺详细的,学到不少,看下一步用不用得上了。。。

  1. #include <iostream>
  2. #include <cmath>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <cstdlib>
  6. #include <string>
  7. #include <sstream>
  8. #include <algorithm>
  9. #define Max 2147483647
  10. #define INF 0x7fffffff
  11. #define N 50010
  12. #define ll long long
  13. #define mem(a,b) memset(a,b,sizeof(a))
  14. #define repu(i, a, b) for(int i = (a); i < (b); i++)
  15. const double PI=-acos(-1.0);
  16. using namespace std;
  17. int rank[N],p[N];
  18. void init(int n)
  19. {
  20. repu(i,,n+)
  21. {
  22. rank[i] = ;
  23. p[i] = i;
  24. }
  25. }
  26. int find_set(int x)
  27. {
  28. if(x!=p[x])
  29. {
  30. int fx=find_set(p[x]);
  31. rank[x]=(rank[x]+rank[p[x]])%; //注意 是rank[p[x]]而不是rank[fx]
  32. p[x]=fx;
  33. }
  34. return p[x];
  35. }
  36. bool Union(int x,int y,int d)
  37. {
  38. int u = find_set(x);
  39. int v = find_set(y);
  40. printf("%d---%d\n",u,v);
  41. if(u == v)///如果在同一个集合
  42. {
  43. if(( - rank[x] + rank[y])%!=d)///如果符合吃鱼的关系
  44. return true; ///这个关系可以通过举例得出
  45. else
  46. return false;
  47. }
  48. p[v] = u ;
  49. rank[v]=(rank[x]-rank[y]+d+)%;///与上式不同 需仔细归纳
  50. return false;
  51. }
  52. int main()
  53. {
  54. int n,m;
  55. scanf("%d%d",&n,&m);
  56. init(n);
  57. int sum = ,a,b,d;
  58. repu(i,,m)
  59. {
  60. scanf("%d%d%d",&d,&a,&b);
  61. if((a == b&&d == ) || a > n || b > n)
  62. sum++;
  63. else if(Union(a,b,d-)) ///传d-1 方便关系式的表达
  64. sum++;
  65. }
  66. printf("%d\n",sum);
  67. }

POJ-1182 分组并查集的更多相关文章

  1. poj 1182 (关系并查集) 食物链

    题目传送门:http://poj.org/problem?id=1182 这是一道关系型并查集的题,对于每个动物来说,只有三种情况:同类,吃与被吃: 所以可以用0,1,2三个数字代表三种情况,在使用并 ...

  2. Poj(1182),种类并查集

    题目链接:http://poj.org/problem?id=1182 再次熟练种类并查集,又积累点经验,和技巧,rank 0 2 1 先计算father[x] ,再更新rank[x]; #inclu ...

  3. POJ 1182 食物链 [并查集 带权并查集 开拓思路]

    传送门 P - 食物链 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit  ...

  4. poj 1182 食物链 并查集 题解《挑战程序设计竞赛》

    地址 http://poj.org/problem?id=1182 题解 可以考虑使用并查集解决 但是并不是简单的记录是否同一组的这般使用 每个动物都有三个并查集 自己 天敌 捕食 并查集 那么在获得 ...

  5. POJ - 1182 食物链 并查集经典

    思路:设r(x)表示节点x与根结点的关系,px表示x的根结点.记录每个节点与其父节点的关系,就能很方便知道每个节点以及和它的父节点的关系. struct node{ int par; //父亲节点 i ...

  6. POJ 1182 食物链(并查集的使用)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 81915   Accepted: 24462 Description ...

  7. poj 1182 食物链 并查集的又一个用法

    食物链   Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 41584   Accepted: 12090 Descripti ...

  8. POJ 1182食物链(并查集)

    食物链Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 85474 Accepted: 25549Description动物王国中有三 ...

  9. poj——1182食物链 并查集(提升版)

    因为是中文题,题意就不说了,直接说思路: 我们不知道给的说法中的动物属于A B C哪一类,所以我们可以用不同区间的数字表示这几类动物,这并不影响结果,我们可以用并查集把属于一类的动物放在一块,举个例子 ...

  10. poj 1182 (扩展并查集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 58979   Accepted: 17247 Description ...

随机推荐

  1. (5) 深入理解Java Class文件格式(四)

    转载:http://blog.csdn.net/zhangjg_blog/article/details/21658415 前情回顾   在上一篇博客深入理解Java Class文件格式(三) 中, ...

  2. 【Session】Tomcat中Session的外置

    > 参考的优秀文章 Tomcat Session 持久化 Package org.apache.catalina.session 最近同事在做Session外置的功能,我对Session持久化. ...

  3. GATT两个角色 服务器与客户端

    两个设备应用数据的通信是通过协议栈的GATT层实现的. 从GATT角度来看,当两个设备建立连接后,他们处于以下两种角色之一: GATT服务器: 它是为GATT客户端提供数据服务的设备 GATT客户端: ...

  4. php: 学习记录

    1.get_object_vars($obj) 获取对象$obj的属性数组 2.类和对象 <?php // 类和对象 echo "类和对象" . "\n" ...

  5. Beginning Windows Azure Development Guide

    目  录 一 初始化Windows Azure 二 云应用程序的编写. 2.1云应用程序的创建. 2.2一个简单的云应用程序. 2.3 托管云程序. 三 云程序的数据库操作. 3.1通过Cloud平台 ...

  6. Delphi TTable 组件

    TTable 是 TDataSet 的派生类,它是基于 BDE 数据库引擎的数据集组件,也是一个较简单的数据组件,可以直接从数据库中获取数据表的数据,只需设置连接的数据库属性(Database) 和所 ...

  7. iOS开发之滤镜的使用技巧(CoreImage)

    一.滤镜的内容和效果是比较多并且复杂的 ,学习滤镜需要技巧 如下: 两个输出语句解决滤镜的属性选择问题: 1.查询效果分类中包含什么效果按住command 点击CIFilter 进入接口文件 找到第1 ...

  8. MySQL 循环执行kill语句杀掉连接

    mysql中创建索引时,一直卡住不动,刚开始以为可能是数据量太大导致的,可是一直等了很久还是一样没有反应,看来操作的表被锁住了,执行show processlist 果然发现有大量的lock,使用ki ...

  9. 用python的BeautifulSoup分析html 【转】

    原地址:http://www.cnblogs.com/twinsclover/archive/2012/04/26/2471704.html 序言 之前用python爬取网页的时候,一直用的是rege ...

  10. google高级搜索

    ext:php program_listing intitle:MythWeb.Program.Listing inurl:preferences.ini “[emule]” intitle:”Ind ...