http://codevs.cn/problem/1074/

题目描述 Description
动物王国中有三类动物 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),输出假话的总数。

输入描述 Input Description
第一行是两个整数N和K,以一个空格分隔。   

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

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

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

输出描述 Output Description
只有一个整数,表示假话的数目。

样例输入 Sample Input
100 7

1 101 1

2 1 2

2 2 3

2 3 3

1 1 3

2 3 1

1 5 5

样例输出 Sample Output
3

数据范围及提示 Data Size & Hint
输入文件

对7句话的分析 100 7

1 101 1  假话

2 1 2   真话

2 2 3   真话

2 3 3   假话

1 1 3   假话

2 3 1   真话

1 5 5   真话

路由器在没有学并查集的时候瞎写了一通然后看了题解。
……虽然学完了并查集还是对这题无从下手。
但是至少还有可靠的题解。
……不过神犇们的题解各种各样……就讲一种路由器理解的吧。
……然而,为了方便路由器,所以我把关键点扔到了代码里!

那在这里就多说一句吧。
动物只有ABC类,A->B->C->A……没有别的种类。
这是能用并查集判断真假话的重要依据。
换句话说,我们知道c被b吃,c吃a,那么a吃b。

//并查集中
//find(x)==find(y)表示x是y的同类
//find(x+n)==find(y)表示x吃y
//find(x+2*n)==find(y)表示x被y吃
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int fa[150001]={0};
int lie=0;
int find(int a){if(fa[a]!=a)fa[a]=find(fa[a]);return fa[a];
}
void unionn(int a,int b){fa[b]=a;return;
}
int main(){int n,k;scanf("%d%d",&n,&k);for(int i=1;i<=3*n;i++){fa[i]=i;}for(int i=1;i<=k;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);if(b>n||c>n){lie++;continue;}if(a==1){if(find(b+n)==find(c)||find(b+n*2)==find(c)){//如果b吃c||b被c吃 lie++;continue;}unionn(find(b),find(c));//b与c同类 unionn(find(b+n),find(c+n));//b吃c吃的 unionn(find(b+n*2),find(c+n*2));//b被能吃c的吃 }else{if(find(b)==find(c)||find(b+2*n)==find(c)){//如果b与c同类||b被c吃 lie++;continue;}unionn(find(b+n),find(c));//b吃c unionn(find(c+n*2),find(b));//c被b吃 unionn(find(c+n),find(b+2*n));//c吃吃b的}}printf("%d",lie);return 0;
}

Codevs1074:食物链——题解相关推荐

  1. 洛谷P3183食物链题解

    不得不说,这是道很难减少时间复杂度的题,且这个题有点像一道拓扑排序题,但是这个难度标签有点低. 我们应该可以想到拓扑排序可能是这个题的正解,但是题目中有输出总数,因此我们就可以造一个数组表示从这个点出 ...

  2. 【codevs1074】食物链

    食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 动物王国中有三类动物 A, ...

  3. POJ 1182 食物链(并查集+偏移向量)题解

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

  4. [题解]NOI 2001 食物链

    发个题目链接吧 http://www.cqoi.net:2012/JudgeOnline/problem.php?id=1356 [题解] 在高一妹纸的推荐下看的这道题,发现NOI竟然有水题啊啊,果断 ...

  5. 洛谷 最大食物链计数 python题解

    题目:P4017 最大食物链计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 给你一个食物网,你要求出这个食物网中最大食物链的数量. (这里的"最大食物链&q ...

  6. 【题解】食物链(并查集)

    题目链接https://www.acwing.com/problem/content/242/ 思路: 首先明确一点,由于我们是逐条看每句话,很多时候我们无法确定所有动物的相互关系,那么如何处理动物之 ...

  7. 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )

    昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...

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

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

  9. LuoguP3183 [HAOI2016]食物链 记忆化搜索

    题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3.... ...

  10. 【29.42%】【POJ 1182】食物链

    Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64875 Accepted: 19085 Description 动物王国中有三 ...

最新文章

  1. Deploying Windows Mobile 6 with Exchange Server 2007 白皮书
  2. 简历受HR欢迎的四大特点
  3. pyav Invalid data found when processing input (libav.h264: no frame!)
  4. 【指标统计】本区或跨区取WEB统计指标配置方法
  5. Linux 中统计一个进程的线程数
  6. 唯一约束(UNIQUE_KEY)
  7. 北京 | 轻舟智航 招聘 感知算法工程师
  8. 阿里java代码规范插件
  9. sklearn实践之——计算回归模型的四大评价指标(explained_variance_score、mean_absolute_error、mean_squared_error、r2_score)
  10. 银河麒麟系统服务端命令_麒麟系统介绍
  11. 手机屏幕怎么计算机,怎么将手机屏幕投屏到电脑上
  12. 设计模式-行为型软件设计模式(六)
  13. 2020 HDU Multi-University Training Contest 6(部分)
  14. animation停留_animation控制动画暂停/播放
  15. [计算机英语]句子翻译(只含unit1.3.4.5.7.8.9.12)
  16. 管理者该如何思考团队建设
  17. 一图读懂 | 亿美软通富媒体消息助力营销价值提升
  18. 检查python是否安装成功
  19. Windows11-Redis 最新安装教程
  20. eNSP内部网络访问外部网络实验

热门文章

  1. 小游戏:红色警戒争霸战!
  2. va_buffersharing example
  3. chrome driver 环境问题
  4. CM4下SPI接口CAN模块配置流程
  5. Caused by: java.lang.Error: Unresolved compilation problems:解决办法
  6. 2013年全球重要黑客大会时间及网址一览
  7. WINDOWS超级热键
  8. 电脑专业英语1695词
  9. django里template中的书名号
  10. 在mosquitto和Node-Red间使用基于的MQTTS双向认证通讯( 私有CA)