AcWing 240. 食物链
#include <iostream>
using namespace std;
const int N = ;
int n, m;
int p[N], d[N]; //p是baba,d是距离
int find(int x) {
if (p[x] != x) {//如果x不是树根
int t = find(p[x]);//指向根节点 存起来 因为赋值完之后就变了
d[x] += d[p[x]];//更新为到根节点之间的距离 ==到父节点之间的距离+父节点到根节点之间的距离
p[x] = t;//再把赋值成根节点
}
return p[x];
}
int main() {
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i ++ ) p[i] = i;//初始化,自己是一个集合
int res = ;//假话的个数
while (m -- ) {
int t, x, y;//t表示询问的种类
scanf("%d%d%d", &t, &x, &y);
if (x > n || y > n) res ++ ;//超出范围,假话
else {
int px = find(x), py = find(y);//找根节点
if (t == ) { //如果是同类
if (px == py && (d[x] - d[y]) % )//如果在一个集合而且距离%3不等
res ++ ;//假话
else if (px != py) {//如果根节点不同,说明不在一个集合
p[px] = py;//把py变成px的根节点
d[px] = d[y] - d[x];//因为同一类,所以%3之后相等,所以距离直接为差
}
} else {//表示吃 如果x吃y,那么d[x]-d[y]=1
if (px == py && (d[x] - d[y] - ) % )//如果在一个集合, 而且不为1
res ++ ;//假话
else if (px != py) {//如果不在一个集合
p[px] = py;//合并
d[px] = d[y] + - d[x];
}
}
}
}
printf("%d\n", res);
return ;
}
AcWing 240. 食物链的更多相关文章
- AcWing 240. 食物链 | 并查集
传送门 题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形. A吃B, B吃C,C吃A. 现有N个动物,以1-N编号. 每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...
- AcWing:240. 食物链(扩展域并查集 or 带边权并查集)
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形. A吃B, B吃C,C吃A. 现有N个动物,以1-N编号. 每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用 ...
- ACWing 238 银河英雄传说
最近带权并查集这块比较薄弱,直接看食物链看不懂,就老实一步步来了. 有一个划分为N列的星际战场,各列依次编号为1,2,…,N. 有N艘战舰,也依次编号为1,2,…,N,其中第i号战舰处于第i列. 有T ...
- 关押罪犯 and 食物链(并查集)
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...
- NOI2001|POJ1182食物链[种类并查集 向量]
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65430 Accepted: 19283 Description ...
- tyvj1202 数数食物链
描述 TsyD学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...
- vijos1531 食物链
背景 安徽省芜湖市第二十七中学测试题 NOI 2001 食物链(eat) Description:OfficialData:OfficialProgram:JackDavid127 描述 动物王国中有 ...
- poj1182食物链_并查集_挑战程序设计竞赛例题
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65534 Accepted: 19321 Description ...
- RHCS 6.5 由于resource-agents-3.9.2-40.el6版本过低导致rgmanager[61164]: [fs] umount failed - REBOOTING问题的解决
問題描述: RHEL 6.5版本RHCS在disable或者relocate service的時候,會導致節點重啟,查看日誌顯示umount掛载點失敗,日誌如下: Nov 29 16:03:50 ph ...
随机推荐
- 【vue 权威指南】 学习笔记 二
1.指令 1.1内部指令 基础指令:v-show , v-else , v-model , v-repeat , v-for , v-text , v-el , v-html , v-on , v-b ...
- PPTP搭建
一.装包 yum -y install pptpd-1.4.0-2.el7.x86_64.rpm //系统光盘不自带,需要自行下载 二.修改配置文件并启动软件 rpm -qc ...
- windows-problem :电脑上网的无线图标带有黄色星号,但不影响正常上网!
电脑可以上网,但是无线图标带有黄色星号如何解决? 进入“网络和共享中心”,点击“更改适配器设置”,看看是不是有两个以上的“本地连接”,只有一个有用,其他的删除即可.
- Wannafly Camp 2020 Day 6K 最大权值排列
按照样例那样排列即可 #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; if( ...
- [P4450] 双亲数 - 莫比乌斯反演,整除分块
模板题-- \[\sum\limits_{i=1}^a\sum\limits_{j=1}^b[(i,j)=k] = \sum\limits_{i=1}^a\sum\limits_{j=1}^b[k|i ...
- C++——动态内存分配3
动态创建多维数组 new 类型名T[下标表达式1][下标表达式2]…: 如果内存申请成功,new运算返回一个指向新分配内存首地址的指针,是一个T类型的数组,数组元素的个数为除最左边一维外各维下标表达 ...
- I+Me=完整的自我
这是这个系列的第二篇文章,如同第一篇一样,这篇文章会在24小时后删除. 之所以如此极端,因为我自认为这篇文章很有价值,不以这种方式,大家即使看了,也只会一带而过,不会真的汲取到营养. 这篇文章涉及的关 ...
- .NET知识梳理——4.特性Attribute
1. 特性 1.1 特性Attribute 特性就是一个类,继承自Attribute抽象类(该类无抽象方法.避免实例化),约定俗成用Attribute类结尾,标记时可省略掉Attribu ...
- HTML的表单初级验证
HTML的表单初级验证 placeholder(提示信息) required(确保不能为空) pattern(正则表达式验证) 1. placeholder(提示信息) 语法: <p>账号 ...
- 转载:Cubic interpolation
https://www.paulinternet.nl/?page=bicubic Cubic interpolation If the values of a function f(x) and i ...