POJ1182 食物链 并查集

POJ1182: 食物链(并查集运用) POJ1182: 食物链(并查集运用) 题目描述 动物王国中有三类动物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句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就 阅读详情

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

第一行是两个整数N和K,以一个空格分隔。 
以下K行每行是三个正整数 D,X,Y,两数之间用一个空格隔开,其中D表示说法的种类。 
若D=1,则表示X和Y是同类。 
若D=2,则表示X吃Y。

Output

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

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

Source


用re数组去记录第 i 个生物与其父亲节点的关系,判断真假只需对两者的父亲节点进行判断即可。


#include <iostream>
#include <cstdio>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
#define INF 0x3f3f3f3f
#define maxn 50000
int n,m;
int parent[maxn+10];
int re[maxn+10];
int getparent(int a)
{
    if(parent[a]!=a){
        int temp=parent[a];
        parent[a]=getparent(temp);
        re[a]=(re[a]+re[temp])%3;
     }
    return parent[a];
}

int main()
{
    int o,p,q;
    scanf("%d%d",&n,&m);
    int cnt=0;
    for(int i=1;i<=n;i++){
        parent[i]=i;
        re[i]=0;
    }
    while(m--){
        scanf("%d%d%d",&o,&p,&q);
        if(p>n||q>n||(o==2&&p==q)){
            cnt++;
            continue;
        }
        int a=getparent(p);
        int b=getparent(q);
        if(a==b){
            if((o==1&&re[p]!=re[q])||(o==2&&re[p]!=(re[q]+2)%3)){
                cnt++;
            }
        }else{
            parent[b]=a;
            re[b]=(re[p]+o+1-re[q])%3;
        }
    }
    printf("%d\n",cnt);
    return 0;
}


EPSON RX8010SJ RTC实战:I2C寄存器配置避坑指南(附完整初始化代码) 本文详细解析了EPSON RX8010SJ RTC芯片在I2C寄存器配置中的常见问题与解决方案,包括TEST位、STOP位和中断控制等关键配置要点。通过实战经验分享和完整的初始化代码模板,帮助开发者避免常见陷阱,确保RTC模块的稳定运行。 阅读详情

相关推荐

记一次网络风暴/网络环路

环境: win10 x64 ,联想云教室,电子教室,华三交换机。 状况描述: 最开始开机,一直卡在PXE启动界面,进不去系统。电脑技术张工说,先开教师机后开学生机。因为学生机开机需要读取教师机的镜像。但是状况依旧。 开始排查网络,重启交换机后,发现陆续有几台电脑能登陆进系统桌面了,但很慢起码过了5分钟以上才能进去。 教师机一直都是正常的,然后我在教师机部署电子教室。技术说这电子 教室与云教室IP冲突。 (那之后我查了下这两款软件的PID和端口,所占端口不一样,那没冲突) 我说不可能吧,这套软件在

Nightwish5的博客 2865

数学中常见的arg min,arg max是什么意思

arg    是变元(即自变量argument)的英文缩写。 arg min 就是使后面这个式子达到最小值时的变量的取值 arg max 就是使后面这个式子达到最大值时的变量的取值 例如 函数F(x,y): arg  min F(x,y)就是指当F(x,y)取得最小值时,变量x,y的取值 arg  max F(x,y)就是指当F(x,y)取得最大值时,变量x,y的取值

JayMining的博客 24万+

ENVI 5.6保姆级教程:高分七号DLC影像从打开到融合的完整流程(附避坑指南)

本文详细介绍了ENVI 5.6处理高分七号DLC影像的完整流程,包括环境准备、数据解压、正射校正、图像融合等关键步骤。特别针对国产卫星数据处理的独特挑战,提供了实用的避坑指南和优化技巧,帮助用户高效完成光学影像的预处理和质量提升。

weixin_33269743的博客 382

POJ 1182 食物链(并查集) 详解

POJ 1182 食物链 (并查集) 详解参考做法比较经典的并查集的题目,主要是要理解路径压缩的过程。 用0 1 2 分别表示A B C的关系。 0吃1,1吃2,2吃0. 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。

chutzpah 2万+

advanced installer 打包Flutter的Windows程序安装包(基本打包、开机自启、定时自动检测升级、包含卸载程序)

advanced installer 打包Flutter的Windows程序安装包(基本打包、开机自启、定时自动检测升级、包含卸载程序)

qq_45634989的博客 2878

原生H5如何优雅拦截浏览器返回事件:全面屏侧滑退出的解决方案

本文深入探讨了在原生H5中如何优雅地处理浏览器返回事件,特别是针对全面屏手机侧滑返回手势的解决方案。核心是利用HTML5 History API,通过`history.pushState`方法在历史栈中插入记录,并监听`popstate`事件,从而实现在用户侧滑时平滑关闭全屏预览层而非直接退出页面,有效提升了移动端H5应用的原生交互体验。

i0j1k2l3m的博客 269

[POJ 1182]食物链[并查集]

题目链接:[POJ 1182]食物链[并查集] 题意分析: 动物间可能存在一种食物链x吃y,y吃z,z吃x。下面给出一些语句,判断有多少句是假话。 解题思路: 设置三个并查集,分别代表物种,同一并查集中的动物种类相同。 不同种类间的合并代表着捕食关系。例如 x, y。因为x可以为任意一个种类中的动物,所以在合并它们捕食关系时,我们要把所有的可能情况都合并起来。 什么时候说谎话呢? 1

闲停 559

Simulink开发项1000例实战专栏--实例17:基于 Simulink 的 BLDC 电机驱动系统的设计与实现

项目背景无刷直流电机(BLDC)因其高效、可靠、低维护的特点,广泛应用于电动汽车、无人机、工业自动化等领域。基于 Simulink 的 BLDC 电机驱动系统可以实现对电机的精确控制,包括速度控制、位置控制和转矩控制。通过仿真和测试,可以优化控制算法,提高系统的性能和可靠性。

xiaoheshang_123的博客 562

poj 1182 食物链 并查集 Java

poj 1182 食物链 这道题其实还不是太明白 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; class UnionFind { int[] parent; int[] size; int count; public UnionFind(int n) {

weixin_46621409的博客 323

华为OD技术面真题 - 数据库Mysql - 1

汇总华为OD技术面高频Mysql相同问题,提供详细解答。

qq_45776114的博客 1083

使用MiniExcel.SaveAsByTemplate快速地保存百万数据

该代码展示了如何使用MiniExcel快速生成并导出百万级销售数据。核心方法GenerateLargeData()可生成指定数量的随机销售记录,包含客户名、日期、VIP状态、积分等20个字段。通过随机函数模拟真实数据分布,并支持自定义数据量(默认100万条)。配合Excel模板使用MiniExcel.SaveAsByTemplate()方法,能高效地将大数据量导出为Excel文件,且处理速度极快。代码结构清晰,包含数据生成、随机日期辅助方法和数据模型类,适合需要批量生成测试数据或导出大型报表的场景。

大坡3D软件开发 253

POJ1182_食物链_并查集

唔,写了一晚上- -不只是写代码,我以为之前那个HDU4003我写的注释已经够多的了,没想到这次写的更多,果然写注释是会上瘾的- - 直接贴题和我自己的代码吧,题解神马的全在代码里,自认为自己这次写的还是比较清楚详尽和简洁的(自大啦-_-) 不过主要的核心思想用模三加法来加入并查集并不是我自己想出来的 食物链 Time Limit: 1000MS   M

u011343989的专栏 800

Wazuh部署记录

Wazuh是一个免费的开源安全平台,统一了XDR和SIEM功能。它可以保护内部部署、虚拟化、容器化和基于云的环境中的工作负载。Wazuh帮助组织和个人保护其数据资产免受安全威胁。它被全球数千个组织广泛使用,从小型企业到大型企业。443:仪表盘界面访问端口1515:探针连接服务器端口1514:探针回传信息端口以上3个端口必须打开防火墙。

墨痕诉清风的博客 1560

POJ 1182 食物链 【扩展域并查集】

动物王国中有三类动物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句话...

独钓门前月 360

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

POJ1182食物链--并查集的使用

POJ1182食物链 一道并查集题目 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句话有的是真的,有的是假的。当一句话满足下列三条之一时

weixin_45808576的博客 230

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

POJ 1182 食物链 题解【并查集】

POJ 1182 食物链 题解【并查集】 题目链接:http://poj.org/problem?id=1182 ac代码: #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #define N 150001 using namespace std; i...

qq_43979159的博客 213

并查集怎么搞?POJ1182 食物链

文章目录并查集操作初始化查询元素的"祖先"查询元素是否同组合并POJ1182 食物链题解AC代码Tips 并查集 并查集是一种用来管理元素分组情况的数据结构。 可以进行如下操作: · 查询元素a和元素b是否属于同一组; · 合并元素a和元素b所在的组。 操作 初始化 int par[N], dth[N]; void init(int n) { for (int i = 0; i <= n; i++) { par[i] = i; dth[i] = 0;

Zoybzo想AK 223

kuangbin 并查集 - POJ - 1182 食物链

kuangbin 并查集 - POJ - 1182 食物链 (并查集模板题) 传送门 Click here ~~ 题解: 当op 等于 1的时候(真话x和y是同类): 如果x的祖宗节点等于y的祖宗节点且(dis[x]-dis[y]) % 3!=0的时候 如果 xx ≠ yy,合并x和y的集合。 因为合并x和y所在集合多出了一段长度,这块长度是find(x)到find(y)的距离,所以求多出来的这块部分的长度。当x和y是同类时,有这样的特性(dis[x] + dis[find[x]] - dis[y])

ACM-ICPC 现役(铜牌) Codeforces Rating: 2172 218

poj 1182 食物链 //并查集

poj 1182 食物链 //并查集http://poj.org/problem?id=1182 食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 99085 Accepted: 29983 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣...

Rshs 213

POJ 1182 食物链(带权并查集)

POJ 1182 食物链(带权并查集) 前几天在叶某同学的忽悠下,做了这道挺有意思的题目,感觉这道有必要做下记录。刚开始想到大概是绕一个圈子来证明之前的关系是否与当前语句给出关系矛盾,若矛盾,则是假话(就是后来看别人博客的向量的方法,但是我只是有感觉,具体写不出,所以参考了下这位大神的博客:http://hi.baidu.com/tomspirit/item/d1f2a19b2aaf36d27...

wu2588的专栏 488

【CLASSICAL种类并查集】POJ 1182 食物链

POJ 1182 食物链 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个动物...

L_X_ 176

POJ 1182 食物链 【带权并查集 (种类并查集)】

HDU 3038 How Many Answers Are Wrong 比较经典的带权并查集,能让你真正理解带权并查集: 诠释是这样的:在对并查集进行路径压缩和合并操作时,这些权值具有一定属性,即可将他们与父节点的关系,变化为与所在树的根结点关系。也就是说,权值代表着当前节点与父节点的某种关系(即使路径压缩了也是这样),通过两者关系,也可以将同一棵树下两个节点的关系表示出来。 具体思路: 话不...

指弹键盘哼民谣 506

POJ 1182 食物链(分层并查集)

题目链接: POJ 1182 食物链 题意: 有n个动物,编号1–n,每个动物属于A,B,C三种中的一种,并且A种动物吃B种动物,B种动物吃C种动物,C种动物吃A种动物。 有K条语句。格式是:d,x,y。 d=1时表示x和y是属于同一种类, d=2时表示x吃y。 这条语句如果满足下列条件之一就是错误的语句: 1) 当前的话与前面的某些真的话冲突,就是假话; 2) 当前的话中X或Y比

ramay7 511

POJ 1182-食物链 [并查集] 《挑战程序设计竞赛》2.4

POJ 1182-食物链 [并查集] 《挑战程序设计竞赛》2.4 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示X和Y是同类。 第二...

蔡军帅 357

E - 食物链 POJ - 1182(并查集)

食物链 POJ - 1182 动物王国中有三类动物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个动物,用上...

weixin_43736492的博客 291

(带权并查集)POJ1182 食物链

POJ1182 食物链 思路: 因为题目给的相对关系,所以可以用带权并查集做。 权值:0表示x和y是同类,1表示x吃y,2表示x被y吃。 那么在路径压缩的时候,我们得到w[a->c]=(w[a->b]+w[b->c])%3。在区间合并的时候w[t1]=(-w[x]+w[y]+w-1)%3。在判断关系的时候比较w-1和(w[x]-w[y]+3)%3,+3是为了避免负数,w-1是因为...

Z7784562的博客 194
上一篇: Hdu5671 Matrix 矩阵、行列交换+行列加值
下一篇: POJ2492 A Bug's Life 并查集
Megumin
博客等级 码龄10年 3粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值