题目传送门: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. 使用 COM 类库创建链接桌面快捷方式

    用到的 COM 类库: Windows Script Host Object Model --> Interop.IWshRuntimeLibrary.dll 示例代码: private sta ...

  2. C#整数的三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别

    .int适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型): .int.Parse(string sParameter)是个构造函数,参数类型只支持string类型: .Con ...

  3. 怎么在idea中新建package包,只有directory选项

    http://blog.csdn.net/liyanlei5858/article/details/77320063

  4. nodejs windows安装

    [安装步骤] 一.安装node.js 1.前往node.js官网下载(我下载的是v10.8.0)并安装工具,这里安装路径选到D盘,e:\Program Files\nodejs 安装完毕在命令行输入以 ...

  5. Javascript重点汇总

    LazyMan 实现LazyMan(什么是LazyMan?请自行google) function _LazyMan(_name) { var _this = this; _this.tasks = [ ...

  6. FileInputStream.FileOutputStream执行图片复制

    /** * 需求:拷贝一个图片 * 思路: * 1.创建一个字符输入流和图片相关联. * 2.用字节写入流对创建图片文件,用于存储到图片数据. * 3.通过循环续写,完成数据的存储. * 4.关闭资源 ...

  7. 由于html元素加载导致的问题

    js中要求执行的事件是在完全加载完,但由于本地环境测试一直没发现出问题,在上线后由于网络延迟导致元素加载慢,而事件执行完,没达到预期目标. 这时就需要用到属性 readyState readyStat ...

  8. sqoop2问题解决

    sqoop:000> show version --serverException has occurred during processing command Exception: org.a ...

  9. 全国高校绿色计算大赛 预赛第二阶段(Python)第1关:统计分数的麻烦

    挑战任务 “绿盟杯”比赛过后,赛事承办方的各位工作人员们就开始分头统计各个参赛队伍和同学的成绩了.赛事规模很大,有10000个队伍参加.经过工作人员认真负责的统计,本来已经统计好了这一万个队伍的分数和 ...

  10. LightOJ - 1030 期望+dp

    题目链接:https://vjudge.net/problem/25907/origin 一个山洞,里面有有1到n个位置,每个位置都有一定的金币,你有一个六面的骰子,一开始你在1,每次摇到了哪个数就往 ...