G - 食物链

Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u

Submit Status Practice 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个动物,用上述两种说法,一句接一句地说出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
 1 //并查集加点东西,注意负数
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 int fa[50500];
 6 int right[50500];
 7 int find(int x){
 8     if(fa[x]==x) return x;
 9     int tmp=fa[x];
10     fa[x]=find(fa[x]);
11     right[x]+=right[tmp];
12     right[x]%=3;
13     return fa[x];
14 }
15 int main()
16 {
17     int n,m,k,a,b;
18     scanf("%d%d",&n,&m);
19     memset(right,0,sizeof(right));
20     for(int i=1;i<=n;i++) fa[i]=i;
21     int ans=0;
22     for(int i=1;i<=m;i++){
23         scanf("%d%d%d",&k,&a,&b);
24         if(a>n||b>n) {ans++;continue;}
25         int x=find(a);
26         int y=find(b);
27         if(k==1){
28             if(x==y){
29                 if(right[a]!=right[b]) ans++;
30             }else
31                   fa[y]=x,
32                   right[y]=(right[a]-right[b]+3)%3;
33         }else
34             if(x==y){
35               if((right[a]+1)%3!=right[b]) ans++;
36             }else
37                   fa[y]=x,
38                   right[y]=(right[a]-right[b]+3+1)%3;
39
40     }
41     printf("%d\n",ans);
42     return 0;
43 }

转载于:https://www.cnblogs.com/shenben/p/5459895.html

POJ 1182 食物链相关推荐

  1. POJ 1182 食物链 [并查集 带权并查集 开拓思路]

    传送门 P - 食物链 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit  ...

  2. poj 1182 食物链 并查集

    转自一位大佬的最全题解 https://blog.csdn.net/c0de4fun/article/details/7318642 #include <cstdio> #include ...

  3. POJ 1182 食物链,并查集的拓展

    http://poj.org/problem?id=1182 /******************************************************** 此道题目 前天看的时候 ...

  4. poj 1182 食物链 (并查集)

    http://poj.org/problem?id=1182 重点依旧是用rank记录相对于根节点的关系,并及时跟新rank的值. code: #include<cstdio> using ...

  5. POJ 1182 食物链

    食物链是一道经典的并查集题,这道题难在怎么确定两个动物之间的关系. 看了罗德安大神的分析,有种豁然开朗的感觉. 问题分析: 我们把已经确立了关系的动物分到一个群落里,对于每一个提到的两个数字编号, 看 ...

  6. POJ 1182 食物链 (并查集解法)(详细注释)

    食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 78510 Accepted: 23396 Description 动物王 ...

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

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

  8. poj 1182 食物链的一种解法(详解),非向量法

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

  9. poj 1182 食物链(高级的带权并查集)

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

  10. 拆点并查集(poj 1182: 食物链)

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

最新文章

  1. 卷积神经网络(CNN)原理
  2. 研究院引进:博士70万;硕士40万
  3. web前端——html基础笔记 NO.12{css布局模型(流动,浮动,层模型)}
  4. 玩转CSDN博客之自定义博客栏目,根据需要定制栏目
  5. PHP算法基于相同键合并数组
  6. 实战 | 离线搭建CDH6.20平台 踩坑实录
  7. GirlsInAI 近期计划,求扩散,欢迎大家转起来!
  8. 跨境电商独立站门槛高,为什么还有无数人挤破头想入坑!
  9. ftp 批量上传文件命令
  10. SPSS数据录入【SPSS 007期】
  11. linux windows并发模型,LINUX环境并发服务器的三种实现模型
  12. 【资料】Shell脚本学习指南
  13. 长等线,中等线,正等线,细等线,扁宋,扁等线
  14. LPC2478时钟模块详解
  15. stm32霍尔编码器
  16. 我的2020java社招岗面经,阿里巴巴社招面试经历(Java工程师方向)
  17. vue2路由手动创建二级路由路由传参路由守卫打包上线
  18. 在python中get是什么意思_python get函数有什么作用?示例解析
  19. day23 三升序列
  20. 邮件服务器怎么使用,Winmail Mail Server邮件服务器软件怎么使用

热门文章

  1. Android Studio搭建Tensorflow Lite项目和加载tflite模型文件
  2. 个人博客系统的设计与实现_一个标星近 10k 的现代化的个人独立博客系统,程序员值得拥有...
  3. leetcode 125 valid-palindrome
  4. 一段有趣的python小代码(将numpy中的数组转化为可哈希的字典)
  5. 长链剖分算法完整总结
  6. 优化无极限:从96秒到1.5秒
  7. Rocket - tilelink - AtomicAutomata
  8. 设置Kafka集群的方法
  9. 预科阶段:快速实战入门
  10. Linux下如何实现对某个文件夹进行压缩