食物链
2015-08-19 11:09
260 查看
http://codevs.cn/problem/1074/
并查集。好像入了点门
开数组的时候开成3倍的
用1~n 表示动物本身
用n+1~2*n表示被这种动物吃的
用2*n+1~3*n表示吃这种动物的
那么如果x吃y是真话
则合并R[x]和R[y+n],R[x+n]和R[y+2*n],R[x+2*n]和R[y]
如果x和y是同类是真话
合并R[x]和R[y],R[x+n]和R[y+n],R[x+2*n]和R[y+2*n]
判断:
x吃y,判断R[x]跟R[y+n]是否同根
x和y是同类,判断R[x]根R[y]是否同根
PS:以上内容如有雷同,纯属COPY。
求个可以快速格式化的编译器呀。每次自己排版好累。
并查集。好像入了点门
开数组的时候开成3倍的
用1~n 表示动物本身
用n+1~2*n表示被这种动物吃的
用2*n+1~3*n表示吃这种动物的
那么如果x吃y是真话
则合并R[x]和R[y+n],R[x+n]和R[y+2*n],R[x+2*n]和R[y]
如果x和y是同类是真话
合并R[x]和R[y],R[x+n]和R[y+n],R[x+2*n]和R[y+2*n]
判断:
x吃y,判断R[x]跟R[y+n]是否同根
x和y是同类,判断R[x]根R[y]是否同根
PS:以上内容如有雷同,纯属COPY。
求个可以快速格式化的编译器呀。每次自己排版好累。
#include<iostream> #include<stdio.h> #include<cmath> #include<string.h> #include<algorithm> using namespace std; int relation[150005]={0}; int find(int weizhi) { if(relation[weizhi]==weizhi) return weizhi; return relation[weizhi]=find(relation[weizhi]); } void hebing(int y,int z) { if(find(y)!=find(z)) { relation[relation[y]]=relation[z]; } } int main() { int n,k; cin>>n>>k; for(int i=1;i<=3*n;i++) relation[i]=i; int x,y,z; int daan=0; for(int i=0;i<k;i++) { scanf("%d%d%d",&x,&y,&z); if(y>n||z>n||(z==y&&x==2)) { daan++; }else if(x==1) { if(find(y)==find(n+z)||find(y)==find(n*2+z)||find(n+y)==find(z)||find(n*2+y)==find(z)) { daan++; continue; } hebing(y,z); hebing(y+n,z+n); hebing(2*n+y,2*n+z); }else if(x==2) { if(find(y)==find(z)||find(y)==find(n+z)||find(n*2+y)==find(z)) { daan++; continue; } hebing(y,n*2+z); hebing(n+y,z); hebing(n*2+y,n+z); } } cout<<daan<<endl; return 0; }
相关文章推荐
- SQL SERVER 数据处理利器-SSIS
- Chrome/Chromium HTML5 video 视频播放硬件加速
- ubuntu下无法启动谷歌浏览器
- 第10章 JSP、JavaBean和Servlet的配合使用
- 暑假-动态规划 III-D - FatMouse and Cheese
- jboss eap 6.3 域(Domain)模式配置
- easyui datagrid 逻辑分页
- 去掉UIScrollView的滚动条
- 代理衍生及实现
- Chapter 6 : Delegation和Debug - The Big Nerd Ranch Guide 读书笔记
- 分享:Android系统的常用权限整理
- Shortest Palindrome -- leetcode
- C++ 之 Vector(容器)初始化高维数组
- zookeeper+kafka配置
- 跨站脚本攻击之XSS漏洞
- FreeMarker的模板文件语法
- ruby on rails 关于微信企业号回调模式初步验证通过后再次签名验证失败的解决
- 最低公共祖先Lowest Common Ancestor of a Binary Tree
- leetcode 139: Word Break
- 批处理命令的技巧