【题目】

动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。

现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。

有人用两种说法对这N个动物所构成的食物链关系进行描述:

第一种说法是“1 X Y”,表示X和Y是同类。

第二种说法是“2 X Y”,表示X吃Y。

此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。

1.当前的话与前面的某些真的话冲突,就是假话;

2.当前的话中X或Y比N大,就是假话;

3.当前的话表示X吃X,就是假话。

你的任务是根据给定的N(1≤N≤50,000)和K句话(0≤K≤100,000),输出假话的总数。

【输入格式】

第一行是两个整数N和K,以一个空格分隔。

以下K行每行是三个正整数 D,X,Y,两数之间用一个空格隔开,其中D表示说法的种类。

若D=1,则表示X和Y是同类。

若D=2,则表示X吃Y。

【输出格式】

只有一个整数,表示假话的数目

【样例输入】

100 7
1 101 1 
2 1 2 
2 2 3 
2 3 3  
1 1 3 
2 3 1 
1 5 5

【样例输出】

3

【分析】

类似银河英雄传说,还是用记录从当前到集合根节点的长度。根据长度对3取模,将点分为三类。

终于过掉了拉!!!~~~ 高兴:)

感谢CCY童鞋的题解!~

#include <stdio.h>
#define maxn 50010int root[maxn],lv[maxn];
int n,k,d,x,y,a,b,ans;int froot(int x)
{if (!root[x]) return x;int te=froot(root[x]);lv[x]=(lv[root[x]]+lv[x])%3;root[x]=te;return te;
}void mergesame(int x,int y)
{int a=froot(x),b=froot(y);root[b]=a;lv[b]=(lv[x]-lv[y]+3)%3;
}void mergeeat(int x,int y)
{int a=froot(x),b=froot(y);root[b]=a;lv[b]=(lv[x]-lv[y]+4)%3;
}int main()
{//filefreopen("eat.in","r",stdin);freopen("eat.out","w",stdout);//scan solvescanf("%d%d",&n,&k);for (int i=0;i<k;++i){scanf("%d%d%d",&d,&x,&y);if ((x>n)||(y>n)){++ans;continue;}a=froot(x);b=froot(y);if (d==1){if (a==b){if (lv[x]!=lv[y]) ++ans;}else mergesame(x,y);}else{if (a==b){if (lv[y]!=(lv[x]+1)%3) ++ans;}else mergeeat(x,y);}}//printprintf("%d\n",ans);//exitreturn 0;
}

转载于:https://www.cnblogs.com/sephirothlee/archive/2010/09/12/1824477.html

[见得多了就懂了]食物链相关推荐

  1. 一文读懂序列建模(deeplearning.ai)之序列模型与注意力机制

    https://www.toutiao.com/a6663809864260649485/ 作者:Pulkit Sharma,2019年1月21日 翻译:陈之炎 校对:丁楠雅 本文约11000字,建议 ...

  2. 让预训练语言模型读懂数字:超对称技术发布 10 亿参数 BigBang Transformer [乾元]金融大规模预训练语言模型

    导读:超对称技术公司发布10亿参数金融预训练语言模型BigBang Transformer[乾元].BBT大模型基于时序-文本跨模态架构,融合训练文本和时序两种模态数据,下游任务准确率较T5同级别模型 ...

  3. 让预训练语言模型读懂数字:超对称技术联合复旦知识工场等发布10亿参数BigBang Transformer[乾元]金融大规模预训练语言模型

    目录 1.通用大模型的缺陷 2.专注于融合训练时序-文本跨模态的预训练模型算法架构 3.学术和工业界覆盖最完整,规模最大的金融投资类数据集 4.创新的预训练方法可大幅提高语言模型准确度:Similar ...

  4. 五步读书法,轻松读懂一本书,系统性的了解一个新领域

    题图:电子阅读,来源:pixabay 引子 这两年读书还算比较多,而且很多书是关于数字化转型.产业互联网.中国近现代史.计算机和软件史.科技史等等,不是熟悉的技术领域的,和以往的读书经历就有所不同.以 ...

  5. 一个毕业生初入社会的历程 (四)一次简单的面试...

    2010年5月13日,这是一个很特别的日子 ,一大早我就起来准备了下资料和心情,早上9点我骑着自行车飚着去南宁最大的电子卖场里的一家大约有 500 ~ 600人的计算机公司进行初次面试!在IT卖场中占 ...

  6. 解决:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 场景,springcloud 学习工程中,把 feign 和 ribbon 工程 作为应用服务 ...

  7. 局域网计算机维护工具,教你用“小浣熊局域网维护小工具”,从此解脱烦恼!...

    朋友,你是否感觉局域网共享设置.不能上网.路由器管理非常复杂,其实你只需要使用我的软件就会觉得非常简单,那么下面就教你使用小浣熊局域网维护小工具软件,轻松搞定! 一.压缩包解压下来以后,就是下面这个样 ...

  8. Nt/2000/xp平台下的存储控制模型(Access Control Model)

    鉴于在nt类操作系统下开发程序时有可能涉及操作注册表,读写文件和操控服务等内容,而为使这类程序在不同帐户下皆可正确运行就需要了解nt类操作系统的存储控制模型,所以才写这篇文章.这篇文章所涉及大部分内容 ...

  9. c++ 合并2个txt_多个表达矩阵文件合并

    前些天群主给了我们学徒一个任务,下载数据集:GSE84073 做一些批量分析! 群主想看到,HCC,CHC,CC这3组,跟healthy的分开比较,然后3个火山图,3个热图. 那么首先需要下载coun ...

最新文章

  1. 格式资料python sqlalchemy 查询结果转化为 Json格式
  2. vscode只有utf8_基于VSCode搭建LaTeX写作环境
  3. 计算机基础中的分层教学,分层教学法在计算机基础课程中的应用研究
  4. ubuntu16.04下wifi上网速度很慢的解决方案
  5. 【英语学习】【Level 08】U01 Let's Read L5 You're a wizard, Harry.
  6. 四轮驱动移动机器人(SSMR)与两轮差速驱动机器人、car-like robot的对比分析
  7. 大数据分析平台具备怎样的功能
  8. android:xml属性集
  9. Linux嵌入式所有知识点-思维导图-【一口君吐血奉献】
  10. python运行脚本文件的3种方法
  11. excepted one 0f #, =>at line16,column 16(byte 311)
  12. 滑窗优化、边缘化、舒尔补、FEJ及fill-in问题
  13. C++ 制作FlappyBird
  14. 使用EXCEL计算并绘制MACD指标
  15. c语言等级分制度的作用,使用C语言怎么对学生的成绩等级进行划分
  16. python实现根据文件名自动分类转移至不同的文件夹
  17. Linux识别不了希捷移动硬盘,希捷(Seagate)移动硬盘无法识别怎么办?
  18. 服务器,socket服务。
  19. Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)
  20. spring xsd 加载问题

热门文章

  1. 决策树以及XGBoost如何画出 树分裂图?
  2. Apache OpenNLP(二)
  3. C语言基础:for循环演示源码,字符循环和浮点数循环
  4. Chalubo僵尸网络来袭 IOT设备或将受到DDoS攻击
  5. 上世纪军用设备仍在继续使用,美军E-3G预警机升级改造后易被黑客攻击
  6. 用一个URL加一个JAVA壳做成一个安卓应用
  7. Revealing图片展示效果(jQuery)
  8. Oracle控制文件操作
  9. 产品设计体会(6010)有关网站改版
  10. grappelli美化Django Admin