poj1182(带权并查集)
来源:互联网 发布:js中this的用法 编辑:程序博客网 时间:2024/06/06 11:03
题意:
中文题就不描述了;
思路:
带权并查集模板题;
加入一个数组r,表示这个点和它父节点的关系;
0表示同类,1表示父亲吃它,2表示它吃父亲;
每次需要更新和父亲之间的关系;
#include<cstdio>#include<cstring>const int N = 50005;int p[N],r[N],n,k;void init(int x) {for(int i = 0; i <= x; i++) {p[i] = i;r[i] = 0;}}int find_set(int x) {if(x != p[x]) {int fx = find_set(p[x]);r[x] = (r[x] + r[p[x]]) % 3;p[x] = fx;}return p[x];}bool Union(int x,int y,int rela) {int px = find_set(x);int py = find_set(y);if(px == py) {if(((r[y] - r[x] + 3) % 3) != rela)return true;elsereturn false;}p[py] = px;r[py] = (r[x] - r[y] + rela + 3) % 3;return false;}int main() {int sum = 0;scanf("%d%d",&n,&k);init(n);for(int i = 0; i < k; i++) {int tmp,x,y;scanf("%d%d%d",&tmp,&x,&y);if(x > n|| y > n || (x == y && tmp == 2))sum++;else if(Union(x,y,tmp - 1))sum++;}printf("%d\n",sum);}
0 0
- poj1182 带权并查集
- poj1182(带权并查集)
- poj1182食物链(带权并查集)
- POJ1182带权并查集
- 带权并查集 poj1182
- poj1182(食物链)----带权并查集
- POJ1182-食物链(带权并查集)
- poj1182 食物链【带权并查集】
- POJ1182 食物链 带权并查集
- POJ1182 食物链 (带权并查集)
- poj1182 食物链 (带权并查集)
- 带权并查集模板(poj1182食物链验证)
- poj1182食物链(带权并查集+路径压缩)
- POJ1182——带权并查集
- 食物链 POJ1182(带权并查集)
- POJ1182 食物链(带权并查集,非常经典)
- 【带权并查集】POJ1182 [NOI2001]食物链
- poj1182 食物链 带权并查集 偏移量
- Android设置用户头像代码
- 【数据结构-队列】顺序队列
- 多个activity的声明以及@+id的解释
- 查看JDK所支持的JAXB版本和linux下配置jdk环境变量以及查看java版本
- MYSQL 5.6的中文问题
- poj1182(带权并查集)
- C++ primer(十二) 类
- mysql 5.6.14 主(master)从(slave)复制(也称mysql AB复制)环境配置[基于binlog]
- 欢迎使用CSDN-markdown编辑器
- Spring 注解方式xml写法
- container_of()宏
- mysql 5.6复制新特性下主从复制配置[基于GTID]
- PostgreSQL常用命令一览
- 策略(Strategy)