poj 1182

食物链
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 86494 Accepted: 25887

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

带权并查集,关键是压缩路径的时候害怕信息丢失,所以对路径的压缩有操作。
关键是向量的思维引入,网上有很多人都写了有关的结题报告。关于向量偏移的引入真的是精妙。
http://wxdlut.blog.163.com/blog/static/128770158200982754311269/
还有这一位的blog向量的解释非常详细:https://blog.csdn.net/niushuai666/article/details/6981689

还有比较坑的是,只能单数据输入,不然会wa。(因为这个错了好多次)
 1 #include<cstdio>
 2 using namespace std;
 3 const int maxn=50006;
 4 int fa[maxn],re[maxn];
 5 
 6 int find_fa(int x)
 7 {
 8     if(fa[x]==x) return x;
 9     int tmp=find_fa(fa[x]);
10     re[x]=(re[x]+re[fa[x]])%3;
11     return fa[x]=tmp;
12 }
13 
14 int main()
15 {
16     int n,m;
17     scanf("%d%d",&n,&m);
18     for(int i=0;i<=n;i++){
19         fa[i]=i;
20         re[i]=0;
21     }
22     int d,a,b,ans=0;
23     while(m--){
24         scanf("%d%d%d",&d,&a,&b);
25         if(a>n||b>n) ans++;
26         else if(d==2&&a==b) ans++;
27         else{
28             int roota=find_fa(a);
29             int rootb=find_fa(b);
30             if(roota!=rootb){
31                 fa[rootb]=roota;
32                 re[rootb]=((d-1)+re[a]+(3-re[b]))%3; ///此处为向量的操作 
33             } else{
34                 if(d==2&&((3-re[a]+re[b])%3)!=d-1){ ///这里的方向一个都不能错
35                     ans++;
36                 }
37                 else if(d==1&&re[a]!=re[b])
38                     ans++;
39             }
40         }
41     }
42     printf("%d\n",ans);
43     return 0;
44 }

 

 

转载于:https://www.cnblogs.com/ZQUACM-875180305/p/9099572.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

条款6:若不想使用编译器自动生成的函数,就该明确拒绝

如果自己定义的类中并不需要copy assignment操作符或者copy构造函数&#xff0c;为了避免编译器自动生成因为编译器自动生成的没什么用&#xff0c;一般是按照顺序进行赋值或者拷贝&#xff0c;对于有对象内含有指针的话可能会出现一些问题可以在private中声明&#xff08;并不…

为什么Android Geeks购买Nexus设备

The Galaxy S III is the highest-selling Android phone, but much of the geeky buzz is around the Nexus 4 – and the Galaxy Nexus before it. Nexus devices are special because they don’t have some of Android’s biggest problems. Galaxy S III是最畅销的Android…

你的知识死角不能否定你的技术能力

有些事情你不知道&#xff0c;但你一定能解决。 有些人通过我账号资料里的微信加我&#xff0c;然后问我一些所谓“怎么办”的问题&#xff0c;不是我不告诉你&#xff0c;而是我确实不知道。我确实有很高的title&#xff0c;也确实有很多的技术积累&#xff0c;但我并没有达到…

算法练习(十二)

The Suspects Description 严重急性呼吸系统综合症( SARS), 一种原因不明的非典型性肺炎,从2003年3月中旬开始被认为是全球威胁。为了减少传播给别人的机会, 最好的策略是隔离可能的患者。 在Not-Spreading-Your-Sickness大学( NSYSU), 有许多学生团体。同一组的学生经常彼此相…

day4----函数-闭包-装饰器

day4----函数-闭包-装饰器 本文档内容&#xff1a; 1 python中三种名称空间和作用域 2 函数的使用 3 闭包 4 装饰器 一 python中三种名称空间和作用域 1.1名称空间&#xff1a; 当程序运行时&#xff0c;代码从上至下依次执行&#xff0c;它会将变量与值得关系存储在一个空间中…

滤波器和均衡器有什么区别_什么是均衡器,它如何工作?

滤波器和均衡器有什么区别It’s in your car, home theater system, phone, and audio player but it doesn’t have an instruction manual. It’s an equalizer, and with a little know-how you can tweak your audio and fall in love with it all over again. 它在您的汽车…

网络视频监控与人脸识别

明天又要去面试了&#xff0c;趁次机会也将以前做的东西总结一下&#xff0c;为以后理解提供方便&#xff0c;也再加深下印象。 网络视频监控与人脸识别主要由三个程序组成&#xff1a;1、视频采集与传输程序&#xff1b;2、接受与显示程序&#xff1b;3、人脸识别程序。下面就…

esxi.主机配置上联端口_为什么现代的电脑机箱仍然具有USB 2.0端口?

esxi.主机配置上联端口With USB 3.0 becoming more prevalent with each passing year now, you may have found yourself wondering why modern computers still have USB 2.0 ports built into them. With that in mind, today’s SuperUser Q&A post has the answers to…

使用命令导入、导出mysql数据

1.导出全部数据库 利用mysqldump的—all-databases参数可以一口气把你数据库root用户下的所有数据库一口气导出到一个sql文件里。然后&#xff0c;重装系统后使用source命令可以再一口气倒回来。 需要确定mysql安装的路径&#xff1a;本机是&#xff1a;C:\Program Files\MySQL…

面试--跨域--cors

cors是什么 cors 跨域资源共享 Cross-origin resource sharing是一种跨域的解决方案 它允许浏览器向跨源服务器&#xff0c;发出XMLHttpRequest请求&#xff0c;从而克服了AJAX只能同源使用的限制。 但是需要浏览器的支持。值得注意的是&#xff1a;整个CORS通信过程&#xff0…

【原理图操作】原理图更新PCB时未改动元器件布局变动问题?

转载PCB布局、布线完工之后&#xff0c;由于设计功能&#xff0c;发现不完善时, 原理图部分功能需要改动&#xff0c;再改原理图&#xff0c;修改完成后&#xff0c;导入PCB过程中&#xff0c;发现PCB中未改动&#xff08;部分&#xff09;的元器件 布局发生了变化&#xff0c;…

关闭edge任务栏预览_如何在Microsoft Edge中关闭选项卡预览

关闭edge任务栏预览Now that it has extension support, Microsoft Edge is becoming a more and more viable browser. One feature people seem to either love or hate is the pop-up preview you get when you hover over a tab. There’s no built-in setting that lets y…

oracle 创建view时,授权给用户

解决方法&#xff1a; 以dba用户登录 sqlplus / as sysdba 赋予scott用户创建VIEW的权限 grant create view to scott 以scott用户登录oracle conn scott/tiger 创建视图成功 CREATE OR REPLACE VIEW myview AS 转载于:https://www.cnblogs.com/523823-wu/p/7635436.html

[BZOJ 1072] 排列perm

Link&#xff1a; BZOJ 1072 传送门 Solution&#xff1a; 一道直接next_permutation纯暴力就能过的题&#xff1f; 难道2007年时大家都不知道next_permutation这个函数吗 还是用复杂度更优的状压DP吧 设$dp[i][j]$为状态为$i$且对$d$余$j$的个数&#xff0c; 注意$dp[(1<&l…

智能手机丢失 数据安全_丢失智能手机时该怎么办

智能手机丢失 数据安全Phones get stolen or lost everyday. With a plethora of data ripe for identity-theft on it, a lost phone can easily make your blood run cold. Take a deep breath, How-To Geek will talk you through this. 手机每天都会被盗或丢失。 随着大量用…

程序员怎样成为一名架构师?

在今天的技术圈&#xff0c;可能随便遇到一个人递给你一张名片&#xff0c;title 就是某某架构师。架构师多如过江之鲫&#xff0c;也正是眼下业内一个有趣的现象。对于架构师&#xff0c;你有什么看法&#xff1f;什么是架构师&#xff1f;随便打开某招聘网站&#xff1a;系统…

C++设计模式之工厂模式(1)

关于设计模式的作用&#xff1a; “帮助我们将应用组织成容易了解&#xff0c;容易维护&#xff0c;具有弹性的架构&#xff0c;建立可维护的OO系统&#xff0c;要诀在于随时想到系统以后可能需要的变化以及应付变化的原则。” 具体可参考&#xff1a;https://www.cnblogs.com/…

共享没有权限访问权限_如何与家人共享SmartThings访问权限

共享没有权限访问权限If you have multiple people in your household and want them all to have access to SmartThings from their phones, here’s how to share access to SmartThings with anyone you want. 如果您的家庭中有多个人&#xff0c;并且希望他们所有人都可以…

PABX

自动用户小交换机;&#xff3b;私用自动交换分机&#xff3d; A private telephone exchange that automatically connects internal “branch” lines to the external circuits of a telephone system. 一种自动地将内部用户线连接到电话系统外线的专用电话交换机。 Private …

使用jquery+css实现瀑布流布局

虽然可以直接使用css实现瀑布流布局&#xff0c;但显示的方式有点问题&#xff0c;所以这儿就直接使用jquerycss来实现瀑布流布局&#xff0c;最终效果如下&#xff1a; 思路是通过将每个小块的position设置为relative&#xff0c;然后计算出在当前选择的列下应该上移的距离&am…