[kuangbin带你飞]专题五 并查集 E POJ 1182
来源:互联网 发布:linux c gbk转utf8 编辑:程序博客网 时间:2024/05/16 09:51
题目地址:https://vjudge.net/contest/66964#problem/E
思路:虽然知道是带权并查集,但是还是找不到表达的方法。这道题有一篇题解写的很好理解,推荐一下。
大神题解:http://blog.csdn.net/c0de4fun/article/details/7318642/
AC代码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=50000+10;int fa[maxn],a[maxn];int n,k;int find(int p){ if(p==fa[p]) return p; int old=fa[p]; fa[p]=find(fa[p]); a[p]=(a[p]+a[old])%3; return fa[p];}void merge(int d,int p,int q){ int fp,fq; fp=find(p); fq=find(q); if(fp==fq) return; fa[fp]=fq; a[fp]=(a[q]+d-a[p]+3)%3; return;}bool istrue(int d,int p,int q){ int fp,fq; if(p>n || q>n || (d==2 && p==q)) return false; fp=find(p); fq=find(q); if(fp!=fq) return true; else { if(a[p]==((d-1)+a[q])%3) return true; else return false; }}int main(){ scanf("%d%d",&n,&k); for(int i=0;i<=n;i++) { fa[i]=i; a[i]=0; } int ans=0; for(int i=1;i<=k;i++) { int d,a,b; scanf("%d%d%d",&d,&a,&b); if(!istrue(d,a,b)) ans++; else merge(d-1,a,b); //printf("%d\n",ans); } printf("%d\n",ans);}
0 0
- [kuangbin带你飞]专题五 并查集 E POJ 1182
- kuangbin带你飞 专题五 并查集
- [kuangbin带你飞]专题五 【并查集】 【--完结--】
- POJ 2236 A - Wireless Network[kuangbin带你飞]专题五 并查集
- [kuangbin带你飞]专题五 并查集 A POJ 2236
- [kuangbin带你飞]专题五 并查集 B POJ 1611
- [kuangbin带你飞]专题五 并查集 F POJ 1417
- [kuangbin带你飞]专题五 并查集 G POJ 1456
- [kuangbin带你飞]专题五 并查集 H POJ 1733
- [kuangbin带你飞]专题五 并查集 J POJ 2492
- [kuangbin带你飞]专题五 并查集 N POJ 1308
- [kuangbin带你飞]专题五 并查集 I POJ 1984
- [kuangbin带你飞]专题五 并查集 K POJ 2912
- kuangbin专题五 并查集 POJ 1182食物链(带权并查集)重要
- 【 题集 】 【kuangbin带你飞】专题五 并查集 更新ing...
- hdu 1213 How Many Tables ([kuangbin带你飞]专题五 并查集)
- hdu 1272 小希的迷宫[kuangbin带你飞]专题五 并查集
- [kuangbin带你飞]专题五 并查集 C HDU 1213
- OpenGL学习(三):坐标变换
- JS:表格排序
- n个人围成一圈报数出列
- 50. Pow(x, n)
- JavaScript CSS Style属性对照表
- [kuangbin带你飞]专题五 并查集 E POJ 1182
- 如何在XML设定android控件的颜色(十六进制颜色码)
- 达内学校比较——消息的组成和分类
- ffmpeg.c源码中关于参数设置的流程
- 国人:JSON-RPC之初识
- ActiveMQ Destination高级特性
- HTML A标记事件写法
- windows下,apache多站点的配置
- matlab 线性代数入门指导