今天写了道并查集的题,看来并查集的题刷少了,,,,,用法好神奇啊!!!开三倍并查集

用i表示自己,i+n存天敌,i+2*n存可以克制de,再逻辑判断一下即可。

所以,要意识到并查集的分类处理可以开不同倍数的空间来适应题目要求。

1074 食物链

2001年NOI全国竞赛

 时间限制: 3 s
 空间限制: 64000 KB
 题目等级 : 钻石 Diamond

题解

题目描述 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    真话

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#define fr(i,l,r) for(int i=l;i<=r;++i)//懒。。。。。。。
using namespace std;
int n,m,D,x,y,ans;
int f[200000];
int find(int a){if(f[a]!=a)f[a]=find(f[a]);return f[a];}
void make(int x1,int y1){if(find(x1)!=find(y1))f[find(x1)]=find(y1);}
int main(){scanf("%d%d",&n,&m);fr(i,1,3*n)f[i]=i;fr(i,1,m){scanf("%d%d%d",&D,&x,&y);if((x>n)||(y>n)||(x==y&&D==2)){ans++;continue;}if(D==1){if(find(x)==find(2*n+y)||find(n+x)==find(y)||find(x)==find(n+y)||find(2*n+x)==find(y)/*吃他的他吃的不能搞 */){ans++;continue;}make(x,y),make(x+n,y+n),make(x+2*n,y+2*n);}if(D==2){//x搞yif(find(y)==find(x)||find(y+n)==find(x)||find(y)==find(x+2*n)){ans++;continue;}make(x+2*n,y+n),make(x+n,y),make(x,y+2*n);}}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/zzmmm/p/6501182.html

NOI[2001]食物链相关推荐

  1. [题解]NOI 2001 食物链

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

  2. [ NOI 2001 ] 食物链

    \(\\\) Description 有三类动物 \(A,B,C\),满足\(A\) 吃 \(B\),\(B\)吃 \(C\),\(C\) 吃 \(A\). 现有 \(N\) 个动物,以 \(1 - ...

  3. AC日记——食物链 codevs 1047

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

  4. 【codevs1074】食物链

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

  5. wikioi-天梯-提高一等-并查集-1074:食物链

    题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并 ...

  6. POJ 1703 Find them, Catch them(并查集高级应用)

    POJ 1703 Find them, Catch them(并查集高级应用) 手动博客搬家:本文发表于20170805 21:25:49, 原地址https://blog.csdn.net/sunc ...

  7. NOI 题目 试题 目录 信奥 历年

    NOI  题目  试题 目录 信奥 历年 NOI  2018 题目  试题 目录 信奥 历年 第一试   2018年7月18日   08:00-13:00 1.归程  return 2.冒泡排序    ...

  8. 1734: 炮兵阵地

    1734: 炮兵阵地 [命题人 : #include <queue> #include <math.h> #include <stack> #include < ...

  9. 【NOIOL】【数论 / 数值】正反切函数的应用

    题目描述 反正切函数可展开成无穷级数,有如下公式 (其中) 使用反正切函数计算是一种常用的方法.例如,最简单的计算的方法: 然而,这种方法的效率很低,但我们可以根据角度和的正切函数公式: 通过简单的变 ...

最新文章

  1. linux怎样创建硬链接,Linux下创建软、硬链接
  2. 开源代码ViewPageIndicator的使用
  3. stringbuilder删除最后一个字符_Java类-StingBuffer,StringBuilder
  4. maven使用出现的错误
  5. 乘风破浪的迁移学习!四字成语讲明白这个大热研究方向
  6. mysql双一参数_MySQL 的双1设置-数据安全的关键参数(案例分享)
  7. Hive报错:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  8. MySQL-第十二篇管理结果集
  9. Excel 10个高级办公技巧
  10. 有哪些比较好的免费简历网站?
  11. 电脑基础知识入门:键盘上的英文,意思和功能汇总!
  12. 计算机视觉中的论文常见单词总结
  13. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第4章:LISTS
  14. win10内存占用率过高怎么办_Win10系统硬盘占用率100%各种卡死怎么办?
  15. 成都拓嘉启远:造成拼多多异常订单的五种常见原因
  16. C++ 11 内容总结
  17. Linux vim分屏,如何切换窗口
  18. 首个Laravel工作流引擎发布 V1.0正式版
  19. ERP(用友)-账套管理
  20. 行人重识别(1)——行人检测综述

热门文章

  1. linux ssh 推送文件_WinSCP软件双系统(Win-Linux)文件传输教程
  2. Linux怎么调oracle存储,Linux 环境下Oracle安装与调试(四)之视图、存储过程
  3. 计算机网络的体系结构与协议基本概念,计算机网络技术基础-第3章网络体系结构与协议.ppt...
  4. 【ruoyi若依】echarts图表跑版
  5. uniapp开发微信小程序时,报错:Now you can provide attr `wx:key` for a `wx:for` to improve performance
  6. mongodb单机部署
  7. java hive 查询语句,使用java连接hive,并执行hive语句详解
  8. python程序结构有哪几种_Python数据结构与算法(几种排序)小结
  9. python无参数装饰器_python_之无参装饰器_01
  10. android应用资源可以分为两大类,Android 应用资源(一)