食物链

题解: 
经典的并查集关系类问题,还是类似 poj1703 的方法,用x+n表示 x所吃的集合,用x+2×n表示 吃x的集合 ,然后用并查集连连连就行。。。 
代码:

#include<iostream>
#include<algorithm>
#include<stdio.h>
#define maxn (50005)
using namespace std;
int n,m,fa[4*maxn],ans;
void init()
{for (int i=1;i<=4*n;i++)fa[i]=i;
}
int find(int x)
{if (fa[x]==x) return fa[x];return fa[x]=find(fa[x]);
}
void unio(int x,int y)
{fa[find(x)]=find(y);return ;
}
int pan1(int x,int y)//判断  x与y是同类  是否是真话
{if (x>n || y>n || x<=0 ||y<=0) return 0;if (find(x+n)==find(y) || find(x+2*n)==find(y)) return 0;//如果 x所吃的东西与y是同类 或 吃x的东西与y是同类,返回0(假话)return 1;
}
int pan2(int x,int y)//判断  x吃y  是否是真话
{if (x>n || y>n || x<=0 ||y<=0 || x==y) return 0;if (find(x)==find(y) || find(x+2*n)==find(y)) return 0;//x与y是同类,或,y与吃x的东西是同类,则返回0(是假话)return 1;
}
int main()
{scanf("%d%d",&n,&m);init();ans=0;for (int i=1;i<=m;i++){int p,x,y;scanf("%d%d%d",&p,&x,&y);if (p==1) {if (pan1(x,y)){//要注意同时将三个集合全部重合unio(x,y);unio(x+n,y+n);unio(x+2*n,y+2*n);}elseans++;}else{if (pan2(x,y)){unio(x+n,y);//y与x吃的东西连接unio(x+2*n,y+n);//y吃的东西与吃x的东西连接unio(x,y+2*n);//x与吃y的东西连接}elseans++;}}printf("%d\n",ans);
}

sdnu 1078相关推荐

  1. SCAU 1078 破密

    1078 破密 时间限制:1000MS  内存限制:65536K 提交次数:258 通过次数:77 题型: 编程题   语言: 无限制 Description 有一行英文密码,友军急切地想知道原文是什 ...

  2. 九度oj 题目1078:二叉树遍历

    题目1078:二叉树遍历 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5326 解决:3174 题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历 ...

  3. PAT甲级1078 Hashing:[C++题解]哈希表、哈希表开放寻址法、二次探测法

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题建立hash表是利用只具有正增量的二次探测法来解决冲突, 索引 = 数 % 哈希表的大小 如果映射到同一个索引idx,hash表 ...

  4. SDNU 1029.巧分整数(斯特林数(改)dp)

    Description 聪明的lg给syc出了一道简单的题目,syc把脑细胞都用光了也不知道该怎么去做,那么请厉害的你来帮助syc做做这道题目.题目的要求就是取一个整数n,这个整数n大于0小于等于20 ...

  5. SDNU 1019.礼物(水题)

    Description 圣诞节快到了,同学们每个人都准备了一定的钱用来买礼物.已知每个人送礼物的时候都会把自己准备的钱平均分成自己要送的人数份,送给自己的好友,剩余的钱留在自己手中.同时,也会收到若干 ...

  6. SDNU 1011.盒子与球(斯特林函数)

    Description 现有r个互不相同的盒子和n个互不相同的球,要将这n个球放入r个盒子中,且不允许有空盒子.则有多少种放法? Input n, r(0 <= n, r <= 10). ...

  7. LightOj 1078 Basic Math

    思路: 设输入的两个数分别为n和a,每一次所得到的数为update: 开始update=a,依次update分别为update*10+a,这样数据会超出范围,则update每次为update=(upd ...

  8. 动态规划训练21 [FatMouse and Cheese HDU - 1078 ]

    FatMouse and Cheese HDU - 1078 这道题需要说一说,定义dp[x][y]表示从点(x,y)出发,每次走不超过k步,所能吃到的最大量. 有点难搞的是,这里递归的顺序不好确定, ...

  9. 【渝粤题库】国家开放大学2021春1078复变函数题目

    教育 教育 试卷代号:1078 2021年春季学期期末统一考试 复变函数 试题 2021年7月 一.单项选择题(本题共20分,每小题4分) 1.若z=x+iy,则|z|2=( ). A.x2-y2 B ...

  10. C++学习之路 | PTA乙级—— 1078 字符串压缩与解压 (20 分)(精简)

    1078 字符串压缩与解压 (20 分) 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示.例如 ccccc 就用 5c 来 ...

最新文章

  1. 如何正确的选择适合自己的WEB报表工具
  2. 保姆级教程:Spring Boot 单元测试
  3. Linux下安装Dubbo运行环境
  4. 有上下界网络流问题汇总
  5. idea修改maven项目版本号
  6. 开源 静态 文件 服务器,Node.js搭建静态服务器
  7. ADO 连接数据库的几种方式
  8. DevOps 转型,只有工具是远远不够的!
  9. Google正在失去DeepMind?
  10. 关于开源软件的十个问题(下篇)
  11. java计算经纬度距离_LeetCode 题解 |461. 汉明距离
  12. Matlab中的数据预处理-归一化(mapminmax)
  13. 服务器双系统快捷键,mac双系统切换快捷键
  14. Number精度超了怎么办
  15. github python100天_GitHub - ychgithub/Python-100-Days: Python - 100天从新手到大师
  16. 关于marked数组处理
  17. ThinkPHP开发规范 --- 摘自ThinkPHP手册
  18. 正宇丨做事,要“借力”,不要“尽力”
  19. 【个人网站】php入门级个人BBS网站搭建成果(含源码)
  20. centos 虚拟机出问题 Oh no,something has gone wrong! 解决方法

热门文章

  1. {大学快毕业的程序员,现在开始写博客}
  2. python期末考试是怎么考的_python期末考试复习
  3. ring3下穿透磁盘还原技术揭秘
  4. eclipse常用的搜索快捷键
  5. Parallel Scavenge垃圾回收器线上调优实战
  6. 计算机相关学科查找英文paper的一般方法
  7. 基于HFSS的圆形左旋圆极化贴片天线仿真分析
  8. linux大业内存,linux 内存占用过大分析
  9. U8根据发货单生成销售订单(反向生单)
  10. 竞价推广常见难题及优化调整思路