NYOJ207 POJ1182 食物链(并查集)
来源:互联网 发布:mysql添加语句怎么写 编辑:程序博客网 时间:2024/06/10 14:08
我的理解:
并查集解决。
我的代码:
#include <iostream>#include <cstdio>#define MAX_N 50005#define MAX_K 100005using namespace std;int N,K;int T[MAX_K],X[MAX_K],Y[MAX_K];int par[MAX_N],rank[MAX_N];void init(int n){for(int i = 0;i<n;i++){par[i] = i;rank[i] = 0;}}int find(int x){if(par[x] == x){return x;}else{return par[x] = find(par[x]);}}void unite(int x,int y){x = find(x);y = find(y);if(x == y) return;if(rank[x] < rank[y]){par[x] = y;}else{par[y] = x;if(rank[x] == rank[y]) rank[x]++;}}bool same(int x,int y){return find(x) == find(y);}void solve(){init(N*3);int ans = 0;for(int i = 0;i<K;i++){int t = T[i];int x = X[i]-1,y = Y[i]-1;if(x<0 || N<=x || y<0 || N<=y){ans++;continue;}if(t == 1){if(same(x,y+N) || same(x,y+2*N)){ans++;}else{unite(x,y);unite(x+N,y+N);unite(x+N*2,y+N*2);}}else{if(same(x,y) || same(x,y+2*N)){ans++;}else{unite(x,y+N);unite(x+N,y+2*N);unite(x+2*N,y);}}}cout<<ans<<endl;}int main(){freopen("D:/OJ/挑战程序设计竞赛/食物链.txt","r",stdin);cin>>N>>K;for(int i = 0;i<K;i++){cin>>T[i]>>X[i]>>Y[i];}solve();}
阅读全文
0 0
- NYOJ207 POJ1182 食物链(并查集)
- poj1182食物链(并查集)
- POJ1182 食物链 (并查集)*新方法
- poj1182 食物链 (种类并查集)
- poj1182食物链 (并查集)
- poj1182 食物链(经典并查集)
- POJ1182 食物链(并查集)
- poj1182食物链(并查集)
- POJ1182:食物链(种类并查集)
- poj1182食物链(并查集)
- POJ1182 食物链(并查集)
- POJ1182 食物链(并查集)
- NYOJ207 VS POJ1182 食物链
- 食物链 POJ1182 -- 并查集
- poj1182 食物链 (并查集)
- poj1182 并查集 食物链
- poj1182食物链 并查集
- 并查集-POJ1182食物链
- RH124-第三节-man命令讲解
- POJ
- ImageLoader清除内存的方法,两行代码
- 编码问题
- httpClient发送get和post参数形式总结
- NYOJ207 POJ1182 食物链(并查集)
- hihocoder1162(骨牌覆盖,1*2铺k*n)
- 如何将Android studio 的项目变成Lib工程,供项目使用
- 秒读硬链接与软连接
- 新建本机dubbo项目的注意事项
- 笔记:Tensor RPCA: Exact recovery of corrupted low-rank tensors via convex optimization
- Android 百度地图集成问题(定位不准或定位在非洲)
- RH124-第四节-vim,管道符,输出重定向,gedit
- GVim配置文件