题目 14 食物链
来源:互联网 发布:淘宝上李宁官方网店 编辑:程序博客网 时间:2024/06/08 04:23
#include<stdio.h>
using namespace std;
int p[150005],r[150005];
void I(){
for(int i=0;i<=N*3;i++){
p[i]=i;
r[i]=0;
}
}
int find(int i){
if(p[i]!=i) p[i]=find(p[i]);
return p[i];
}
void unions(int x,int y){
int tx=find(x);
int ty=find(y);
if(tx!=ty){
if(r[tx]>r[ty])p[ty]=tx;
else if(r[tx]<r[ty])p[tx]=ty;
else{
p[ty]=tx;
r[tx]++;
}
}
}
bool same(int x,int y){
return find(x)==find(y);
}
using namespace std;
int p[150005],r[150005];
void I(){
for(int i=0;i<=N*3;i++){
p[i]=i;
r[i]=0;
}
}
int find(int i){
if(p[i]!=i) p[i]=find(p[i]);
return p[i];
}
void unions(int x,int y){
int tx=find(x);
int ty=find(y);
if(tx!=ty){
if(r[tx]>r[ty])p[ty]=tx;
else if(r[tx]<r[ty])p[tx]=ty;
else{
p[ty]=tx;
r[tx]++;
}
}
}
bool same(int x,int y){
return find(x)==find(y);
}
int main(){
int M=0,t,X,Y;
int N,K;
scanf("%d%d",&n,&T);
I();
while(K--){
scanf("%d%d%d",&t,&X,&Y);
if(X<=0||X>N||Y<=0||Y>N) M++;
else if(t==1){
if(same(X,Y+N)||same(X,Y+2*N)) M++;
else{
unions(X,Y);
unions(X+N,Y+N);
unions(X+2*N,Y+2*N);
}
}
else if(t==2){
if(same(X,Y+2*N)||same(X,Y)) M++;
else{
unions(X,Y+N);
unions(X+N,Y+2*N);
unions(X+2*N,Y);
}
}
}
printf("%d\n",M);
return 0;
}
阅读全文
0 0
- 题目 14 食物链
- 题目207:食物链
- poj 1182 里面食物链题目
- NOI2001 食物链 题目分析&题解&代码
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- 食物链
- ios JPEGDecompressSurface : Picture decode failed: e00002d1 解决
- Python函数概况
- 通过输入下三角或者上三角实现输出对称矩阵
- 算法导论-红黑树基本概念
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(二十二)
- 题目 14 食物链
- RxJava2_4:并行处理请求和数据缓存池
- CAS-Client客户端研究(一)-AuthenticationFilter
- 并发与多线程(一)
- 【Java学习笔记】控制语句习题集
- 还是A+B
- VLC支持的视频和音频文件扩展名
- 深入理解JavaScript
- D