poj 1182 带权并查集经典
来源:互联网 发布:mac chill 试色 编辑:程序博客网 时间:2024/06/05 20:57
点击打开链接
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int M = 51000;int par[M],rank[M],n;// rank[x]={0,1,2} x和父节点关系 同类 吃 被吃; int find(int x){if(x!=par[x]){int t=par[x];par[x]=find(par[x]);//路径压缩rank[x]=(rank[x]+rank[t])%3; // 画个表格推一下咯~ }return par[x];}void Union(int x,int y,int d) // x->y 关系为 d {int fx=find(x);int fy=find(y);if(fx!=fy){par[fx]=fy; // fx->fy 关系? rank[fx]=(3-rank[x]+d+rank[y])%3;//fx->x->y->fy }}int main(){int n,k,d;cin>>n>>k;for(int i=1;i<=n;i++){par[i]=i;}int count=0;for(int i=0;i<k;i++){int x,y;scanf("%d%d%d",&d,&x,&y);if(x>n||x<1||y>n||y<1||(d==2&&x==y)){count++;continue;}int rx=find(x);int ry=find(y);if(rx==ry) //两个元素在同一组 才可以可以判定之间的关系 。{ // x->root r[x] 则root-> x 3-r[x] //当前x->y关系? 是否为 d-1? // x->root->y (r[x]+3-r[y])%3if((rank[x]+3-rank[y])%3 != d-1){count++;continue;} }else {Union(x,y,d-1); //x->y d-1}}cout<<count<<endl;return 0;}
0 0
- poj 1182 带权并查集经典
- POJ 1182 食物链 (经典带权并查集)
- 带权并查集,经典-食物链,poj-1182
- poj食物链,经典带权并查集
- poj 1182 (带权并查集)
- poj 1182 带权并查集
- poj 1182(带权并查集)
- poj 1182 带权并查集
- 带权并查集 poj 1182
- poj 1962 带权并查集
- POJ 2492[带权并查集]
- poj 1733带权并查集
- poj 2912(带权并查集)
- poj 1733(带权并查集)
- POJ 1703 带权并查集
- poj 1984 带权并查集
- POJ 1703 带权并查集
- poj 1182 --食物链(经典并查集)
- Fillder工具的简单使用
- 出现Lock-Wait锁等待,怎么解决
- 开通博客的目的
- 我的收藏
- SDCard信息查询
- poj 1182 带权并查集经典
- JavaWeb之Filter(过滤器)
- Java的平台独立性
- maven项目创建后main/java missing问题
- JavaScript 模块化七日谈
- 我的debian8.4(Jessie)配置笔记
- slidingMenu侧滑菜单(加入碎片)
- 《Java虚拟机原理图解(一)》JVM运行时数据区
- ShardPreferences 保存登录状态