题目传送门:http://poj.org/problem?id=1182

这是一道关系型并查集的题,对于每个动物来说,只有三种情况:同类,吃与被吃;

所以可以用0,1,2三个数字代表三种情况,在使用并查集的时候再多加一个关系数组,初始时全部赋值为0

然后就是在进行并查集的每一步时加入关系的改变,

如果祖先节点相同,说明两者之间的关系已经出现,是已知的,判断两者关系之和与给的d-1是否相同

祖先节点不同,说明在此之前两者的关系还未知,就赋予关系

噢 对了 poj 上的这题要单组输入,多组会wa

code

 #include<cstdio>
using namespace std;
int father[];
int relat[];
void give (int n)
{
for (int i=;i<=n;i++)
{
father[i]=i;
relat[i]=; //初始关系都为0
}
}
int find(int x)
{
if (x==father[x]) return father[x];
int t=find(father[x]);
relat[x]=(relat[x]+relat[father[x]])%; //在寻找祖先节点的过程中也要更新关系
father[x]=t;
return father[x];
}
int main()
{
int n,k,sum,d,x,y,sx,sy;
scanf("%d %d",&n,&k);
give(n);
sum=;
while (k--)
{
scanf("%d %d %d",&d,&x,&y);
if (x>n||y>n)
{
sum++;
continue;
}
if (d==&&x==y) //不能自己吃自己啊
{
sum++;
continue;
}
sx=find(x);
sy=find(y);
if (sx==sy) //说明关系可以确定,因为在之前出现过
{
if ((relat[x]-relat[y]+)%!=d-) //加三为了避免负数
sum++;
}
else //关系还不确定,那么不能判断,只能赋予关系
{
father[sx]=sy;
relat[sx]=(relat[y]-relat[x]++d-)%; //sx,sy,x,y的顺序不要反了,这都是对应的
}
}
printf("%d\n",sum);
return ;
}

poj 1182 (关系并查集) 食物链的更多相关文章

  1. poj 2492(关系并查集) 同性恋

    题目;http://poj.org/problem?id=2492 卧槽很前卫的题意啊,感觉节操都碎了, t组测试数据,然后n,m,n条虫子,然后m行,每行两个数代表a和b有性行为(默认既然能这样就代 ...

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

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

  3. Find them, Catch them(POJ 1703 关系并查集)

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38668   Accepted: ...

  4. poj 1182 (扩展并查集)

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

  5. 又见关系并查集 以POJ 1182 食物链为例

    简单的关系并查集一般非常easy依据给出的关系搞出一个有向的环,那么两者之间的关系就变成了两者之间的距离. 对于此题: 若u.v不在一个集合内,则显然此条语句会合法(暂且忽略后两条.下同). 那么将f ...

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

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

  7. ACM/ICPC 之 并查集-食物链(POJ1182)

    并查集的经典题型,POJ上题目还是中文= =,一般看到中文题都会感觉不太简单,这道题的数学归纳用得比较多,可以简化代码,挺有意思的. 同类型的题目还有POJ1703,比这个要简单,想了解并查集基本介绍 ...

  8. POJ 2492 (简单并查集) A Bug's Life

    题意:有编号为1~n的虫子,开始假设这种昆虫是异性恋.然后已知xi 和 yi进行交配,根据已知情况分析能否推理出其中是否有同性恋 这道题和 POJ 1182 食物链 十分相似,不过在更新与父节点关系的 ...

  9. [POJ 2588]--Snakes(并查集)

    题目链接:http://poj.org/problem?id=2588 Snakes Time Limit: 1000MS   Memory Limit: 65536K   Description B ...

随机推荐

  1. 生成一个文件夹中的所有文件的txt列表

    1.windows操作系统中 1.用管理员运行打开dos界面: 2.用cd转到相应的文件夹中: 3.用dir /b /on >list.txt来生成文件列表的txt. 2.Mac系统中 1.打开 ...

  2. Struts 框架

    struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...

  3. 05_ssm基础(四)之Spring基础二

    24.spring配置dbcp并完成CRUD操作 1.准备jar包 2.编辑Product模型 package com.day02.ssm.spring.model; public class Pro ...

  4. com.google.gson.stream.MalformedJsonException

    今天下午项目更新后,调用接口时,提示“请求失败”,发现项目网络框架解析时,报错如下:com.google.gson.stream.MalformedJsonException: Unterminate ...

  5. springboot 线程池

    我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务: 本 ...

  6. sql语句查询菜单结果成 树状图类型 注意适用于id是四位数

    select * from ( select pid,id,name,url,concat(id,":") idOrder from menu where pid=0 and st ...

  7. 使用in ()进行批量删除

    public bool DeleteList(string idlist ) { StringBuilder strSql=new StringBuilder(); strSql.Append(&qu ...

  8. camstar --调用自定义的CDO报帐号没有执行权限的错误

    解决: 访问站点--〉modeling-->role-->Default Modeling-->筛选(如:modeling or Inquiry) 在右边找到自己定义的CDO(ser ...

  9. sqlserver 当前时间减去30天

    参考 https://zhidao.baidu.com/question/750666819064717772.html select dateadd(dd,-30,getdate()) from 表 ...

  10. pycharm的安装(图文)

    pycharm的安装, PyCharm是一种 IDE,可以在里面对python代码调试.语法高亮.Project管理.跳转.智能提示.自动完成.单元测试.版本控制.pycharm提供了一些高级功能,以 ...