当前位置: 首页 > news >正文

并查集 - # [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 和 K 句话,输出假话的总数。

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

Hint

输入数据规模:\(1 \le N \le 50000\)\(0 \le K \le 100000\)

题目分析

解题思路

带权并查集:用权值数组 \(v[i]\) 记录每个节点与根节点的关系

#include <bits/stdc++.h>
int Fa[50002]; // 父节点
int v[50002]; // 与父节点的关系:0 同类,1 被父节点吃,2 吃父节点
// 查找根节点,并进行路径压缩和关系更新
int GetFa(int x) {if (Fa[x]==x) return x;int fx=Fa[x];Fa[x]=GetFa(fx); v[x]=(v[x]+v[fx])%3;  // 关系累加return Fa[x];
}
int main() {int n,k;scanf("%d%d", &n, &k);for (int i=1;i<=n;i++) Fa[i]=i,v[i]=0;int ans=0;for (int i=1;i<=k;i++) {int d,x,y;scanf("%d%d%d", &d,&x,&y);if (x>n || y>n || (d==2 && x==y) ) {ans++; continue;}int fx=GetFa(x),fy=GetFa(y);int d1=d-1;if (fx==fy) {if ((v[x]-v[y]+3)%3 != d1) ans++; //冲突关系} else {Fa[fy]=fx; v[fy]=(v[x]+3-d1+3-v[y])%3; //建立关系}}printf("%d\n", ans);return 0;
}
http://www.jsqmd.com/news/395092/

相关文章:

  • 五大靠谱AI论文生成网站对比,助你快速完成毕业论文写作
  • 困扰于AI论文工具选择?这份专业评分的TOP5榜单可参考
  • 毕业论文用AI写作工具?这5个经过验证的网站排名最实用
  • 完整教程:【AI】AI学习笔记:翻译:langGraph 持久化执行 以及文档部分理解
  • 洛谷 P3378:[模板] 堆 ← 二叉堆
  • 论文写作AI工具如何挑?这份实测过的五大网站排名请收下
  • LabVIEW列车轴承声学成像应用
  • 高效完成论文的AI工具怎么选?精选五大优质平台排名解析
  • 基于时频自适应掩膜和形态学优化的地震数据降噪方法(MATLAB)
  • 五大优质AI论文写作网站推荐,解决你的毕业论文创作难题
  • 开源版 EMQX(集群版)搭建
  • 选AI写论文工具不用愁,权威测评的5个网站排名已整理好
  • 还在纠结论文AI写作工具?这5个高口碑网站排名帮你高效决策
  • 揭秘!提示工程架构师跨界整合案例背后的故事
  • 毕业论文AI写作工具怎么选?这份五大可靠平台排名值得收藏
  • AI原生应用架构设计:如何选择最适合的API编排方案
  • BISHI63 计算阶乘
  • AI原生应用中微服务集成的日志管理与分析方法
  • Tauri 开发环境 Prerequisites 桌面 + 移动端)
  • 毕业论文AI辅助写作选哪个?盘点用户推荐的5个实用平台
  • Atcoder 90 问记录
  • wps/word单倍行距加入公式空白间隙仍然很大?
  • AI Agent技术栈:10个构建生产级Agent的核心概念
  • Shell脚本以及Shell脚本的基础语法就是什么
  • 详细介绍:[特殊字符]BZOJ 离线刷题神级工具!免联网 + 浏览器即开 + 题解代码全,效率直接翻倍!
  • Vue.js 循环语句
  • CVE-2011-1669
  • AngularJS 表达式
  • 【rust-i18n】简介
  • 2026 人工智能与大数据专业毕业论文选题方向及题目示例(nlp/自然语言处理/图像处理)​完整教程:从入门到实战部署