并查集(POJ1182)
链接:http://poj.org/problem?id=1182
定义一种关系R(x,y),x > y 时 R(x,y) = 2;x = y 时 R(x,y)= 1;x < y 时 R(x,y) = 0
则R(x,y)有如下运算法则:
R(x,y) = (R(x,u) - R(y,u) + 4) % 3
R(x,y) = (R(x,u) + R(u,y) + 2) % 3
...
用并查集维持这种关系
/**************************************************************
作者:陈新
邮箱:cx2pirate@gmail.com
用途:poj1182
时间:2014年 4月12日 15:00
测试:12745220 Will4944 1182 Accepted 548K 282MS C++ 967B 2014-04-12 14:58:49
*************************************************************/ #include <stdio.h>
#define MAX_N 50005 int pre[MAX_N]; //并查集
int rel[MAX_N]; //与根节点关系 void init();
int find(int u);
void unite(int r,int u,int v); int main(){
int m,n;
// while(scanf("%d%d",&m,&n) != EOF){ 我去!。。。。
scanf("%d%d",&m,&n);
int r,u,v,sum = ;
init();
for(int i = ;i < n;i++){
scanf("%d%d%d",&r,&u,&v);
if(u > m || v > m || (r == && u == v)){
sum++;
continue;
}
if(find(u) == find(v)){
if((rel[u] - rel[v] + ) % != r){
sum++;
}
}
else{
unite(r,u,v);
}
} printf("%d\n",sum);
// }
} void init(){
for(int i = ;i < MAX_N;i++){
pre[i] = i;
rel[i] = ;
}
} int find(int u){
if(pre[u] == u){
return u;
}
int t = find(pre[u]);
rel[u] = (rel[u] + rel[pre[u]] + ) % ;
pre[u] = t;
return pre[u];
} void unite(int r,int u,int v){
int pu = find(u);
int pv = find(v);
pre[pu] = pv;
rel[pu] = (r + rel[v] - rel[u] + ) % ;
}
并查集(POJ1182)的更多相关文章
- 种类并查集——带权并查集——POJ1182;HDU3038
POJ1182 HDU3038 这两个题比较像(一类题目),属于带权(种类)并查集 poj1182描绘得三种动物种类的关系,按照他一开始给你的关系,优化你的种类关系网络,最后看看再优化的过程中有几处矛 ...
- 《挑战程序设计竞赛》2.4 数据结构-并查集 POJ1182 2236 1703 AOJ2170
POJ1182 http://poj.org/problem?id=1182 题目 难得的中文题... 食物链 Time Limit: 1000MS Memory Limit: 10000K Tota ...
- 带权并查集 poj1182
首先要注意核心代码 int find(int i){ if(i == fa[i]) return fa[i]; int tt = find(fa[i]); num[i] ...
- 并查集例题02.带权并查集(poj1182)
Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...
- 并查集——poj1182(带权并查集高阶)
题目链接:食物链 题解:点击 说一声:这题关系推导值得学习.
- NOI2001|POJ1182食物链[种类并查集 向量]
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65430 Accepted: 19283 Description ...
- 并查集专辑 (poj1182食物链,hdu3038, poj1733, poj1984, zoj3261)
并查集专题训练地址,注册登录了才能看到题目 并查集是一个树形的数据结构, 可以用来处理集合的问题, 也可以用来维护动态连通性,或者元素之间关系的传递(关系必须具有传递性才能有并查集来维护,因为并查集 ...
- POJ-1182 食物链---并查集(附模板)
题目链接: https://vjudge.net/problem/POJ-1182 题目大意: 中文题,不多说. 思路: 给每个动物创建3个元素,i-A, i-B, i-C i-x表示i属于种类x,并 ...
- poj1182 食物链(并查集 好题)
https://vjudge.net/problem/POJ-1182 并查集经典题 对于每只动物创建3个元素,x, x+N, x+2*N(分别表示x属于A类,B类和C类). 把两个元素放在一个组代表 ...
随机推荐
- Xcode9,cocoaPod执行pod install时报错,一行命令即可解决。
- gitlab 存储仓库目录设置及数据迁移
注:一开始没有考虑到把gitlab划分好存储目录,占用系统磁盘,由于gitlab是默认安装的,随着公司代码越来越多,导致gitlab数据目录空间不足 磁盘空间: [root@gitlab ~]# df ...
- UVA11922 Permutation Transformer
思路 直接使用FHQ Treap维护即可 代码 #include <cstdio> #include <cstring> #include <algorithm> ...
- mui中confirm在苹果出现bug,confirm点击确定跳转页面再返回后,页面被遮罩盖住无法使用
项目中使用confirm mui.confirm('您还未抽奖,现在去抽奖吗?', function (res) { if (res.index === 1) { window.location.hr ...
- Predict Referendum by sklearn package
Background Last day we talk about Python Basics in Chinese. Today, we will do data analysis with pyt ...
- js 克隆数组
js克隆数组 1.遍历push 2.slice const a1 = [1, 2];const a2 = a1.slice() 3.concat() const a2 = a1.concat(); a ...
- 也谈开源GIS架构实现思想
针对业务发展需要,需要开发设计一套具备自己独立GIS平台.然而以ArcGIS为主的GIS软件价格昂贵,在经过仔细技术与市场动向调研后,确立一套以Java语言的开源GIS软件平台.桌面CS端Udig+G ...
- Demo整合
1.图片上传: https://github.com/842549829/WebUploader 2.百度编辑器: https://github.com/842549829/Ueditor 3.安卓 ...
- C++_day8pm_多态
1.什么是多态 2. 示例代码: #include <iostream> using namespace std; //形状:位置.绘制 //+--圆形:半径.(绘制) //+--矩形:长 ...
- app在admin中显示成我们想要的中文名
在django的开发中,很多时候我们希望app在admin中显示成我们想要的中文名,而不是显示默认的app_label名称. 比如我们有一个blog应用,在我们的blog app目录下面,默认会生成一 ...