食物链
来源:互联网 发布:单代号时标网络计划 编辑:程序博客网 时间:2024/04/20 19:08
FAQ | About | Google Group | Discuss | Author
All Copyright Reserved ©2010-2016 HUST ACM/ICPC TEAM
Server Time: 2016-08-17 11:41:24 GMT+8
<pre name="code" class="cpp">/* 每种动物没有告知物种所以每个动物有三种可能 每两种动物都对应三种关系 当他们为同类时 那他们不会是捕食或者被捕食关系 当他们是捕食关系时 他们就不会是同类或者被捕食 x 表示 A类 x+n 表示 B类 x+2*n 表示 C类 A吃B b吃c c吃a */ #include<iostream> #include<string> #include<cstring> #include<cstdio> using namespace std; int pre[150014]; int finda(int a) { int x=a; while(pre[x]!=x) { x=pre[x]; } return x; } bool same(int n,int m) { return finda(n)==finda(m); } void merge(int x,int y) { int f1=finda(x); int f2=finda(y); if(f1!=f2) pre[f1]=f2; } int main() { int n,m; scanf("%d %d",&n,&m); for(int i=0;i<n*3;i++) pre[i]=i; int a[100005],b[100005],c[100005]; int num=0; for(int i=0;i<m;i++) { scanf("%d%d%d",&a[i],&b[i],&c[i]); int x=b[i]-1; int y=c[i]-1; if(x<0||x>=n||y<0||y>=n) { num++; continue; } if(a[i]==1) { if(same(x,y+n)||same(x,y+2*n)) num++; else { merge(x,y); merge(x+n,y+n); merge(x+2*n,y+2*n); } } else if(a[i]==2) { if(same(x,y)||same(x,y+2*n)) num++; else { merge(x,y+n); merge(x+n,y+2*n); merge(x+2*n,y); } } } printf("%d\n",num); return 0; }
0 0
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- openstack ice自定义调度算法项目详解(horizon、novaclient、api、scheduler、db、自定义数据库)
- Caffemodel数据结构解析与Protocol Buffer技术详解(C++实例)
- Meta http-equiv属性详解
- Recyclerview
- hadoop 参数配置
- 食物链
- Java中静态变量的适用场景
- 小胖说事-------iOS利用代码添加事件到系统日历中
- Sqlite数据库添加,删除前n条记录
- SuperMap iObject常见问题解答集锦(五)
- Linux 删除文件夹和文件的命令
- java.lang.IllegalArgumentException: Illegal character in query at index
- 二分 + 快排
- Android 6.0权限动态申请