code1074 食物链
2024-09-02 14:09:31
开3*n的并查集,其中x用来连接与x同类的,x+n用来连接x吃的,x+2*n用来连接x被吃的。
1 x y时,如果 x吃y 或 x被y吃,那么为假话,
否则x与y同类,x吃的y也吃,x被吃的y也被吃;
2 x y时,如果 x与y同类(x与x自然也是同类) 或 y吃x,那么为假话,
否则x吃y,y被x吃,y吃x被吃的。
代码:
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<queue>
#include<map>
#include<stdlib.h>
using namespace std; int f[]; int find(int x)
{
if(f[x]==x)return x;
return f[x]=find(f[x]);
} void he(int x,int y)
{
x=find(x);
y=find(y);
if(x==y)return;
f[y]=x;
} int main()
{
int n,m,ans=;
cin>>n>>m; for (int i=;i<=*n;i++)f[i]=i; for (int i=;i<=m;i++)
{
int op,x,y;
cin>>op>>x>>y;
if (x<||y<||x>n||y>n||(x==y&&op==))ans++;
else
{
if (op==)
{
if (find(x)==find(y+n)||find(x)==find(y+*n))ans++;
else
{
he(x,y);
he(x+n,y+n);
he(x+*n,y+*n);
}
}
else
{
if (find(x)==find(y)||find(y+*n)==find(x))ans++;
else
{
he(x,y+n);
he(x+n,y+*n);
he(x+*n,y);
}
}
}
}
cout<<ans;
}
最新文章
- Spring Bean
- MySQL配置文件mysql.ini参数详解
- 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了
- 喜讯!Ubuntu 16.10(Yakkety Yak) Final Beta发布喽!!!
- val() 和attr() 取值的问题
- [CentOS 6.5 X64]讓firefox java plugin 啟動
- android 开发-自定义多节点进度条显示
- java初学的几个问题
- C、C++、Java异或运算交换变量变量值的区别
- C#中的一些技巧
- RChain总体架构图
- MongoDB 3.0新增特性一览
- (JavaScript)实现上传图片实时预览和(文件)大小判断
- Hibernate c3p0的整合
- 让win7变成无线路由(需要用管理员权限打开)最后完善.rar
- Mysql正则匹配某列是否含有手机号
- 02: python3使用email和smtplib库发送邮件
- 2014年百度之星资格赛第四题Labyrinth
- sicily 1154. Easy sort (tree sort&; merge sort)
- Python 正则表达式规则