P2024 食物链 (补集)
题目描述
动物王国中有三类动物 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 句话有的是真
的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。
• 当前的话与前面的某些真的话冲突,就是假话
• 当前的话中 X 或 Y 比 N 大,就是假话
• 当前的话表示 X 吃 X,就是假话
你的任务是根据给定的 N 和 K 句话,输出假话的总数。
输入输出格式
输入格式: 
从 eat.in 中输入数据
第一行两个整数,N,K,表示有 N 个动物,K 句话。
第二行开始每行一句话(按照题目要求,见样例)
输出格式: 
输出到 eat.out 中
一行,一个整数,表示假话的总数。
输入输出样例
输入样例#1: 复制 
100 7 
1 101 1 
2 1 2 
2 2 3 
2 3 3 
1 1 3 
2 3 1 
1 5 5 
输出样例#1: 复制 
3 
说明
1 ≤ N ≤ 5 ∗ 10^4
1 ≤ K ≤ 10^5
code:
#include<cstdio>
int n,k,sum;
int fa[150015];
int find(int x){
    if(fa[x]==x) return x;
    return fa[x]=find(fa[x]);
//    return fa[x]==x?x:(fa[x]=find(fa[x]));
}
int main(){
    scanf("%d %d",&n,&k);
    for(int i=1;i<=n*3;i++) fa[i]=i;
    for(int i=1;i<=k;i++){
        int fl,x,y;
        scanf("%d %d %d",&fl,&x,&y);
        if(x>n||y>n) {
            sum++;
            continue;
        }
        else if(fl==1){
            if(find(x)==find(y+n)||find(x+n)==find(y)){
                sum++;
                continue;
            }
            fa[find(x)]=fa[find(y)],fa[find(x+n)]=fa[find(y+n)],fa[find(x+n+n)]=fa[find(y+n+n)];
        }
        else if(fl==2){
            if(find(x)==find(y)||find(y+n)==find(x)){
                sum++;
                continue;
            }
            fa[find(x+n)]=fa[find(y)],fa[find(x+n+n)]=fa[find(y+n)],fa[find(x)]=fa[find(y+n+n)];
        }
    }
    printf("%d",sum);
    return 0;
}P2024 食物链 (补集)的更多相关文章
- P2024 食物链
		题面:P2024 食物链 emmm其实不太难想 开三倍的数组 1~n:是当前动物的同类 n~2*n:是当前动物吃的动物 2*n~3*n:是吃当前动物的动物 emmmm #include<iost ... 
- 洛谷P2024食物链——并查集补集的灵活运用
		题目:https://www.luogu.org/problemnew/show/P2024 自己在做本题时最大的障碍就是:不会在一个集合的father改变时把相应的补集也跟着改变. 借鉴题解后,才明 ... 
- 【luogu P2024 食物链】 题解
		题目链接:https://www.luogu.org/problemnew/show/P2024 摘吊打集训队的九日dalao一句话 关于带有多个相对集合的全集,我们可以多开几倍的空间.每一倍的元素表 ... 
- P2024 食物链(种类并查集)
		P2024 [NOI2001]食物链 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动 ... 
- 洛谷P2024 食物链
		挺神奇 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种 ... 
- 洛谷 P2024 食物链 POJ 1182 Label:并查集Turbo
		题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ... 
- P2024食物链
		题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ... 
- 种类并查集(洛谷P2024食物链)
		题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ... 
- luogu P2024 食物链
		题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ... 
随机推荐
- list转map工具类,根据指定的字段分组
			import org.apache.log4j.Logger; import java.lang.reflect.Method;import java.util.ArrayList;import ja ... 
- PAAS平台的web应用性能測试与分析
			引言 为什么我会写这一篇博客,由于近期非常多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用訪问非常慢,有极少数应用甚至常常出现504超时现象.当然大家首先想到的是jae性能太差,这也是 ... 
- 项目结构、包、编译为exe!
			一个java源文件里至多有一个public类,该类的名称必须与源文件名称称同样.也能够没有public类.文件名称与随意一个类名一致就可以. 包 类似于cpp的namespace,是对类的再封装,防止 ... 
- FZU 1851  组合数
			给你两个数n和m,然后让你求组合数C(n,m)中的质因子的个数. 这里用到的一个定理:判断阶乘n!中的质因子 i 的个数的方法---f(n!)=n/i+n/i^2+n/i^3+.....n/i^m ( ... 
- 黑马程序猿——JAVA基础——集合
			----------android培训.java培训.java学习型技术博客.期待与您交流.------------ 一.关于java中的集合类 首先看一下,大致的框架流程图 ... 
- iOS 加入粘贴板的功能(复制功能)
			1. UIPasteboard *board = [UIPasteboard generalPasteboard]; board.string = @" 须要粘贴的问题字符串" ... 
- ACM-并查集之小希的迷宫——hdu1272
			***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ... 
- pyhton 从web获取json数据 保存到本地然后再读取
			从web中获取json数据直接进行处理总认为太慢.主要是从web中获取获取数据的过程有点慢. 所以就在想 假设先利用空暇时间把json数据获取并保存到本地,然后再从本地文件里读取和操作.应该就要快非常 ... 
- Php learn note
			Php learn note 1. Between two part of ECHO, there is , sign rather than + sign. echo 'Hello World!!' ... 
- 配置win2008防火墙 允许被Ping的设置方法
			出于安全因素考虑,在 Windows Server 2008 上是不允许从外部对其执行 Ping 指令的 如果要配置允许被 Ping 通过以往的设置步骤会发现并不能从 Windows firewall ... 
