并查集 食物链 POJ1182
来源:互联网 发布:飞行服夹克淘宝 编辑:程序博客网 时间:2024/05/01 08:25
#include <stdio.h>#include <string.h>int f[50005];int rank[50005]; //rank[x]值为0,则与父节点同级,为1则被父节点吃,为2则吃父节点int find(int i){if(i==f[i])return f[i];int a=f[i];f[i]=find(f[i]);rank[i]=(rank[i]+rank[a])%3;return f[i];}int main(){int n,k;int i;int d,x,y;int sum;int fr,ed;scanf("%d%d",&n,&k); //注意不能打while,会WA{sum=0;for(i=0;i<=n;i++){f[i]=i;rank[i]=0;}for(i=0;i<k;i++){scanf("%d%d%d",&d,&x,&y);if(x>n||y>n||(d==2&&x==y)){sum++;continue;}d-=1;fr=find(x);ed=find(y);if(fr==ed){if((rank[y]-rank[x]+3)%3!=d) //归纳所有情况得出的结论{sum++;continue;}}else{f[ed]=fr;rank[ed]=(rank[x]-rank[y]+3+d)%3; //若两点不在同一集合,则合并父节点 }}printf("%d\n",sum);}return 0;}
0 0
- 食物链 POJ1182 -- 并查集
- poj1182 食物链 (并查集)
- poj1182 并查集 食物链
- poj1182食物链 并查集
- 并查集-POJ1182食物链
- POJ1182 - 食物链 - 并查集
- 并查集 食物链 POJ1182
- poj1182 食物链(并查集)
- POJ1182 食物链 并查集
- Poj1182食物链 (并查集)
- POJ1182 食物链(并查集)
- 【并查集】:poj1182,食物链
- POJ1182 食物链(并查集)
- POJ1182 食物链 并查集
- poj1182 食物链[并查集]
- poj1182 食物链(并查集)
- POJ1182 食物链【并查集】
- poj1182食物链(种类并查集)
- css基础01
- HDOJ 4937 Lucky Number
- plupload 上传组件,后台用java实现
- Lua你看了吗
- 建立单向链表的两个程序
- 并查集 食物链 POJ1182
- 数据结构图
- android系统如何获取imei号码,获取手机型号和系统版本号
- 最佳加法表达式 dp
- android读取短信内容(自动填充验证码)
- 你还没有变成真正的孙悟空托世
- 打造平台自媒体的技巧
- 教你如何更换Extjs皮肤
- Spring 集成 Hessian