博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1703 Find them, Catch them
阅读量:5966 次
发布时间:2019-06-19

本文共 972 字,大约阅读时间需要 3 分钟。

并查集。

一个人拆成两个点,如果告知a和b不在一个中,那么把a,b+n并到一个集合中,把a+n,b也并到一个集合中。

询问的时候,如果a和b在一个集合中,输出在一个集合中

如果a和b+n在一个集合中,输出不在一个集合中

剩下的情况输出不确定。

#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;const int maxn=100000+10;int f[2*maxn];int T,n,m;int Find(int x){ if(x!=f[x]) return f[x]=Find(f[x]); return f[x];}int main(){ scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); for(int i=1;i<=2*n;i++) f[i]=i; for(int i=1;i<=m;i++) { char op[5]; scanf("%s",op); int a,b; scanf("%d%d",&a,&b); if(op[0]=='A') { int fa=Find(a),fb=Find(b),fc=Find(b+n); if(fa==fb) printf("In the same gang.\n"); else if(fa==fc) printf("In different gangs.\n"); else printf("Not sure yet.\n"); } else { int fa=Find(a),fb=Find(b+n); int fc=Find(a+n),fd=Find(b); if(fa!=fb) f[fa]=fb,f[fd]=fc; } } } return 0;}

 

转载于:https://www.cnblogs.com/zufezzt/p/5352605.html

你可能感兴趣的文章
PostgreSql 分页limit
查看>>
在MySQL中创建cm-hive使用的数据库及账号
查看>>
HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)
查看>>
python总结
查看>>
hdu 5215 Cycle
查看>>
GCD学习(五) dispatch_barrier_async
查看>>
file_get_contents("php://input")的使用方法
查看>>
MeasureSpec学习
查看>>
Android View体系(五)从源码解析View的事件分发机制
查看>>
数据结构 之 并查集(Disjoint Set)
查看>>
枚举类的创建和使用
查看>>
如何改变Myeclipse编辑区背景色(转)
查看>>
深入浅出LVM on linux
查看>>
转载 C++实现的委托机制
查看>>
编辑框CEdit自动换行简单设置
查看>>
很实用的小功能,通过配置Web.xml让点击文件路径的超链接,直接下载而不会在浏览器上尝试打开...
查看>>
【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
查看>>
Java解析xml的主要解析器: SAX和DOM的选择(附上新方法--Pull解析)
查看>>
再谈 document.documentElement 与 document.body 的 scrollWidth、offsetWidth、clientWidth
查看>>
项目管理: Maven 让事情变得简单
查看>>