C - 食物链 POJ - 1182

大佬,%%%

加入给你一个 1, 那 1 应该放进 A、B、还是C呢,不知道了,所以开三倍的空间, 1~n 表示 A, n+1~2n 表示 B, 2n+1 ~ 3*n 表示 C

我以为路径压缩了就可以用 fa[i] 代替 find(i) 了,实际上,这是不对的,修改的过程中,可能会跳过一些点,所以想要 fa[i] = find(i), 必须把所有元素 find 一遍才能实现

AC 代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn = 5e4+100;
int n, k;
int fa[3*maxn];int find(int x) {if(x == fa[x]) return x;else return fa[x] = find(fa[x]);
}void Union(int x, int y) {int xx = find(x), yy = find(y);if(xx == yy) return ;fa[yy] = xx;
}void init() {for(int i = 1; i <= 3*n; i++) fa[i] = i;
}int main() {//  freopen("test.in", "r", stdin);scanf("%d%d", &n, &k);int cnt = 0;init();for(int i = 1; i <= k; i++) {int op, u, v;scanf("%d%d%d", &op, &u, &v);if(u > n || v > n || u <= 0 || v <= 0) cnt++;else if(op == 1){ // 因为每个元素在 A B C 中的效果是一样的,所以判断都以 A 进行即可 if(find(u) == find(v+n) || find(u) == find(v+2*n)) cnt++; // 如果 AB || AC 在同一集合,则错 else { Union(u, v);Union(u+n, v+n);Union(u+2*n, v+2*n);} }else if(op == 2) {if(find(u) == find(v) || find(u) == find(v+2*n)) cnt++; // A -> A || A -> C else { // 每次合并的结果都是 A -> B 则 A 是 B 的 father Union(u, v+n); // A -> BUnion(u+n, v+2*n); // B -> CUnion(u+2*n, v); // C -> A}              }}printf("%d\n", cnt);return 0;
}

C - 食物链 POJ - 1182相关推荐

  1. 食物链 poj 1182

    C - 食物链 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  2. 食物链 POJ - 1182(带权并查集模板)

    动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用两种 ...

  3. 食物链 POJ - 1182

    题目: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有 ...

  4. P1892 [BOI2003]团伙 +食物链 POJ - 1182 (并查集+思维)

    思路①: 开数组enem[i]记录节点i的敌对节点,当再次输入i的敌对节点时就把他所在并查集的根节点和enem[i]并起来. #include<bits/stdc++.h> using n ...

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

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

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

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

  7. poj 1182 食物链 并查集

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

  8. 【poj 1182】食物链 并查集应用

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

  9. 【POJ - 1182】 食物链(附超详细讲解)(并查集--种类并查集经典题)

    题干: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.  现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.  ...

最新文章

  1. swift_023(Swift 的继承)
  2. 你总是不要等到完全准备好了再去做事情
  3. opencv resize_opencv-python库基础操作(一)
  4. 动态数据源切换--AbstractRoutingDataSource
  5. Git - 命令行 - 使用 Tag 标记你的代码
  6. 如何使用fiddler工具抓包?
  7. 微软服务器打补丁步骤,自己手动制作 Windows 系统补丁包全过程
  8. 自定义IE地址栏图标
  9. matlab_多目标遗传算法
  10. bzoj 1709: [Usaco2007 Oct]Super Paintball超级弹珠
  11. Unity 之 获取物体的旋转角正确数值
  12. 电脑重启f12怎么处理_电脑开机蓝屏按F10F11F12才能打开.怎么办?
  13. 腾讯云PCDN:从P2P到万物互联服务框架
  14. 张博涵清华大学_2009年北大,清华提前录取保送生人数最多的 33所中学
  15. 将门CTO沈强:人工智能时代,技术创新将全面引爆商业变革
  16. 四、SQL函数②(字符串函数)
  17. Java面试题---第四阶段
  18. Qt windows下获取CPU、主板、硬盘、网卡等相关信息
  19. 记一次作业:完成企业网络安全运营建设方案
  20. app销售数据统计手机页面

热门文章

  1. 计算机视觉的优点和局限性
  2. 使用Numpy实现PCA
  3. 强化学习与3D视觉结合新突破:高效能在线码垛机器人
  4. 双调TSP问题通俗讲解
  5. 叮!您收到一份超值Java基础入门资料!
  6. ios转向前端进阶之:html标签类型
  7. 前端见微知著工具篇:Bower组件管控
  8. Java Web整合开发(41) -- Forum
  9. Dojo学习13 dijit.Tree 动态添加节点之一
  10. Excel访问局域网中OLAP方案