POJ1182——食物链(种类并差集)
来源:互联网 发布:学软件哪个学校好 编辑:程序博客网 时间:2024/05/29 14:25
非常经典的并查集。
其实关键还是要找到各个种类之间的转化关系,其实枚举找规律就可以。一开始的时候把关系式推错了,所以一直WA。
还有这题比较坑的地方是只能单组数据,不能写成!=EOF
#include <algorithm>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <iostream>#define INF 0x7fffffffusing namespace std;int fa[100001];int rel[100001];// 0 同类 ,1吃父亲 ,2被父亲吃int Find(int x){ if(x==fa[x]) return x; else { int root=Find(fa[x]); rel[x]=(rel[x]+rel[fa[x]])%3; return fa[x]=root; }}int main(){ int n,k,i; int x,y,v; scanf("%d%d",&n,&k); { int cnt=0; for(i=1;i<=n;i++) fa[i]=i,rel[i]=0; for(i=0;i<k;i++) { scanf("%d%d%d",&v,&x,&y); //if(v==1&&x==y) continue; if(v==2&&x==y||x>n||y>n) {cnt++;continue;} int ax=Find(x); int ay=Find(y); if(ax!=ay) { fa[ax]=ay; rel[ax]=(rel[y]-rel[x]+v+2)%3; } else { if((rel[x]-rel[y]+3)%3!=v-1) cnt++; } } cout<<cnt<<endl; } return 0;}
0 0
- POJ1182——食物链(种类并差集)
- poj1182 食物链 (种类并查集)
- POJ1182:食物链(种类并查集)
- POJ1182食物链,HDU1829(种类并查集)
- POJ1182 食物链 种类并查集(经典)
- poj1182食物链(种类并查集)
- poj1182~食物链~种类并查集
- poj1182食物链 种类并查集
- 【种类并查集】 poj1182食物链
- POJ1182 【NOI2001】 食物链 <种类并查集>
- poj1182 食物链 种类并查集 经典题
- POJ1182 食物链————并查集
- poj1182食物链(并查集)
- POJ1182 食物链 (并查集)*新方法
- poj1182食物链 (并查集)
- poj1182 食物链(经典并查集)
- POJ1182 食物链(并查集)
- poj1182食物链(并查集)
- NYOJ-448 寻找最大数
- Android Volley完全解析(四),带你从源码的角度理解Volley
- 浅析phpwind9.0之登陆机制
- 实现带图标的ListView
- spring技术内幕1-IOC容器体系结构
- POJ1182——食物链(种类并差集)
- UIScrollView的使用大全
- iOS应用拨打电话
- 21天学通Java学习笔记-Day02
- C#中文RSA加密解密的简单方式
- 一个产品人的成长与抉择:从上海到北京、从软件到硬件、从大公司到小团队
- 五大常用算法之回溯法
- Groovy入门教程
- HTTP消息格式