ACM题目————食物链
动物王国中有三类动物 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),输出假话的总数。
第一行是两个整数N和K,以一个空格分隔。
以下K行每行是三个正整数D,X,Y,两数之间用一个空格隔开,其中 D 表示说法的种类。
若D=1,则表示X和Y是同类。
若D=2,则表示X吃Y。
只有一个整数,表示假话的数目。
100 7
1 101 1
2 1 2
2 2 3
2 3 3
1 1 3
2 3 1
1 5 5
3
输入文件
对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 <bits/stdc++.h>using namespace std;
const int maxn = 50005 ;
int fa[maxn*3];
//扩大三倍:
//前n表示a吃的一类元素
//中n表示与a同一类元素
//后n表示吃a的一类元素
int n, k, X, Y, d;
int cnt;int find_set(int a)//找父节点
{if( fa[a] == a ) return a;else return fa[a]=find_set(fa[a]);
}void make_set(int x, int y)
{x = find_set(x);y = find_set(y);if( x == y ) return ;fa[y] = x ;//更新父节点
}int main()
{cin >> n >> k ;cnt = 0 ;for(int i=1; i<=3*n; i++)fa[i] = i ;// 初始父节点是其本身while( k-- ){cin >> d >> X >> Y ;if( X < 1 || Y < 1 ||Y > n || X > n || ( X==Y && d==2))cnt ++ ;else{if( d == 1 ){if( find_set(X) == find_set(n+Y)|| find_set(X) == find_set(Y+2*n))cnt ++ ;else{make_set(X,Y);make_set(X+n, Y+n);make_set(X+2*n, Y+2*n);}}else{if(find_set(X) == find_set(Y) || find_set(Y+2*n)==find_set(X)) cnt ++ ;else{make_set(X,Y+n);make_set(X+n, Y+2*n);make_set(X+2*n, Y);}}}}cout << cnt << endl ;return 0;
}
转载于:https://www.cnblogs.com/Asimple/p/5513333.html
ACM题目————食物链相关推荐
- ACM题目中输入数据的处理(C++语言版)
ACM题目中输入数据的处理(C语言版)见: http://blog.csdn.net/sxhelijian/article/details/8978794 ACM竞赛题目的输入数据常要求有多组,并且格 ...
- 杭电ACM题目类型整理
版权声明:(╯3╰) 转载请注明: http://blog.csdn.net/bat67 杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 10 ...
- ACM题目 1012: [编程入门]字符串分类统计
ACM题目 1012: [编程入门]字符串分类统计 题目描述 输入一行字符,分别统计出其中英文字母.数字.空格和其他字符的个数. 输入 一行字符 输出 统计值 样例输入 aklsjflj123 sad ...
- ACM题目中输入数据的处理(C++版)
ACM题目中输入数据的处理(C语言版)见:http://blog.csdn.net/sxhelijian/article/details/8978794 ACM竞赛题目的输入数据常要求有多组,并且格式 ...
- ACM题目和培养训练!!!
ACM大量习题题库 ACM大量习题题库 现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. USACO ht ...
- 浙大OJ网址及ACM题目分类
转自: http://blog.sina.com.cn/s/blog_61beb97b0100kquq.html 浙大oj网址:http://acm.zju.edu.cn/onlinejudge/ 第 ...
- PUK ACM题目分类
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- 由一道acm题目所想到
已经很长一段时间没有ac题了,一周之前报名参加了计算客的编程大赛,虽然我的结果不 是特别理想,但是还是学到了一些东西.下边,我先贴出题目和对应的程序源码: 代码如下:(c语言) #include< ...
- HDOJ ACM 题目
转载 HDOJ 题目分类(转) 1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 H ...
最新文章
- Redis学习(4)-数据类型set和zset
- Leaflet中使用awesome-markers插件显示带图标的marker
- JZOJ 5850. 【NOIP提高组模拟2018.8.25】e
- 数据结构和算法(Java)-张晨光-专题视频课程
- php strtotime month bug,处理PHP strtotime的BUG
- 布隆过滤器的原理、应用场景和源码分析实现
- 前端学习(2550):事件指令解析
- 通过select选项动态异步加载内容
- CMOS数字集成电路
- 《地理天机一贯 》 聚宝馆手抄珍稀古籍分享
- “浙大学霸作息表”疯传,网友:越优秀就越努力!
- 如何用post方法请求数据?
- 《从一到无穷大:科学中的事实和臆测》小记
- 最近看中的几款Limitless的家具
- 什么是服务器托管?服务器托管和虚拟主机的区别
- MongoDB 运行 service mongod start 后服务没有启动成功
- 安装Swoole报错 make: *** [php_swoole_cxx.lo] Error 1
- 计算机图形学(1)——概论
- 屏幕下雪特效的jQuery实现
- 电子邮件安全对企业的重要性
热门文章
- 通过 User-Agent 请求头判断设备类型
- “10%时间”:优点和缺点——敏捷海滩会议上Elizabeth Pope的报告
- 教你怎么使用你的电脑
- db2 命令选项解释
- 修改windows XP/2000/2003用缩略图方式浏览图片时的默认尺寸
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询
- Adobe Acrobat 高亮工具使用后无法显示文字Bug解决办法
- New template: condition
- MySQL助手_java 8.0Mysql 助手类
- web前端之框架(frameset)