http://acm.hdu.edu.cn/showproblem.php?pid=1829

http://poj.org/problem?id=2492

臭虫有两种性别,并且只有异性相吸,给定n条臭虫(编号1-n)和m对关系,判断是否是出现同性恋的情况。

这题跟食物链的题类似,这里只有两种关系,关系是同性或者异性。

对于每只动物创建两个元素  同性或异性,并用这 2×n个元素建立并查集。

首先判断输入的x和y是否是一个组的。是就flag=1.

然后,如果x和y是一对,那么合并x和y+n,x+n和y。

 #include <cstdio>
const int maxn = ;
int par[*maxn]; void init(int n)
{
for(int i=;i<=n;i++)
par[i]=i;
} int find(int x)
{
return x==par[x]?x:par[x]=find(par[x]);
} void unite(int x,int y)
{
x=find(x);
y=find(y);
if(x!=y) par[x]=y;
} int main()
{
//freopen("a.txt","r",stdin);
int t,n,m,a,b,j=;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
init(n*);
bool flag=;
for(int i=;i<m;i++)
{
scanf("%d%d",&a,&b);
if(find(a)==find(b)) flag=;
else
{
unite(a+n,b);
unite(a,b+n);
}
}
printf("Scenario #%d:\n",j++);
if(flag) printf("Suspicious bugs found!\n");
else printf("No suspicious bugs found!\n");
printf("\n");
}
return ;
}

http://poj.org/problem?id=1703

给你两个罪犯,判断他们是否属于同一帮派,输入n个罪犯和m条关系,n个罪犯中至少有一个属于帮派Dragon,有一个属于  帮派Snake,m条关系中A表示询问着两个人是否属于同一帮派,D表示这两个人不属于同一帮派。

这题思路跟上面一样,但开始wa了几次,对并查集的理解还是不够深。

定义并查集为:并查集里的元素i-x表示i属于帮派x(这里面有3种关系,要么是同一帮派,要么是不同帮派,要么是不能确定。)同一个并查集的元素同时成立。

初始化并查集为 2*N,如果i表示属于帮派A,那么i+N表示属于帮派B,输入两个元素不在同一帮派的时候,就合并两个帮派的元素。

这题跟上面两题一样,都是不确定元素i属于集合A还是集合B,所以要保留所有的可能性。

 #include <cstdio>
const int maxn = ;
int par[maxn*]; void init(int n)
{
for(int i=;i<=n;i++)
{
par[i]=i;
}
} int find(int x)
{
return x==par[x]?x:par[x]=find(par[x]);
} void unite(int x,int y)
{
x=find(x);
y=find(y);
if(x!=y)
{
par[x]=y;
}
} int main()
{
// freopen("a.txt","r",stdin);
int t,n,m,a,b;
char s[];
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
init(n*);
for(int i=;i<m;i++)
{
scanf("%s%d%d",s,&a,&b);
if(s[]=='A')
{
if(find(a)==find(b)) printf("In the same gang.\n");
else if(find(a)==find(b+n)) printf("In different gangs.\n"); //这里开始没想到 唉
else printf("Not sure yet.\n");
}
else if(s[]=='D')
{
unite(a,b+n);
unite(a+n,b);
}
}
}
return ;
}

hdu - 1829 A Bug's Life (并查集)&&poj - 2492 A Bug's Life && poj 1703 Find them, Catch them的更多相关文章

  1. hdu 5458 Stability(树链剖分+并查集)

    Stability Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65535/102400 K (Java/Others)Total ...

  2. [HDU 3712] Fiolki (带边权并查集+启发式合并)

    [HDU 3712] Fiolki (带边权并查集+启发式合并) 题面 化学家吉丽想要配置一种神奇的药水来拯救世界. 吉丽有n种不同的液体物质,和n个药瓶(均从1到n编号).初始时,第i个瓶内装着g[ ...

  3. hdu 1829 A Bug's Life(并查集)

                                                                                                    A Bu ...

  4. hdu 1829 &amp;poj 2492 A Bug&#39;s Life(推断二分图、带权并查集)

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. HDU 1829/POJ 2492 A Bug's Life

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. hdu 5652 India and China Origins 并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题目大意:n*m的矩阵上,0为平原,1为山.q个询问,第i个询问给定坐标xi,yi,表示i年后这 ...

  7. HDU 5458 Stability (树链剖分+并查集+set)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458 给你n个点,m条边,q个操作,操作1是删边,操作2是问u到v之间的割边有多少条. 这题要倒着做才 ...

  8. hdu 4619 Warm up 2(并查集)

    借用题解上的话,就是乱搞题.. 题意理解错了,其实是坐标系画错了,人家个坐标系,我给当矩阵画,真好反了.对于题目描述和数据不符的问题,果断相信数据了(这是有前车之鉴的hdu 4612 Warm up, ...

  9. hdu 5441 Travel 离线带权并查集

    Travel Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5441 De ...

随机推荐

  1. Memcached常用命令及使用说明

    一.存储命令 存储命令的格式: 1 2 <command name> <key> <flags> <exptime> <bytes> < ...

  2. C++ Template之技巧性基础知识

    1.对于T是自定义类型的,如果存在子类型则需要在模版内部加上typename 示例代码: template<typename T> class Myclass { typename T:: ...

  3. java中的匿名内部类

    匿名内部类在java编码中不是很常见,它可一让类实现多继承的特性(多个父类~1个子类) java中的匿名内部类总结http://www.cnblogs.com/nerxious/archive/201 ...

  4. [百度空间] [转]DLL地狱及其解决方案

    DLL地狱及其解决方案 原作者:Ivan S Zapreev 译者:陆其明概要 本文将要介绍DLL的向后兼容性问题,也就是著名的“DLL Hell”问题.首先我会列出自己的研究结果,其中包括其它一些研 ...

  5. Ckeditor注册事件

    这段时间使用js+cookies进行自动草稿保存,个人觉的,这些全在客户端处理比较的好,所以没有使用AJAX+数据库的自动草稿保存方法. 结果出现Ckeditor无法绑定onkeyup,onselec ...

  6. 解决Flash和html在多标签浏览器中互访问题

    在Flash播放器运行时,将不同来源的资源划分到独立的沙箱(sandbox)内,不同沙箱之间不能 彼此操作数据(除非目标沙箱做过一些设置,授权其他沙箱可访问),这就是Flash的跨沙箱问题.当Flas ...

  7. C#中“貌似”跳出while(true)死循环

    当程序第一次执行到Read()函数时,程序会被阻塞,然后输入字符,Enter之后程序被激活,windows平台会自动在输入字符之后加入回车符和换行符,此时输入流中就有三个字符,然而read每次只读取一 ...

  8. 游戏引擎网络开发者的64做与不做(二A):协议与API

    [编者按]在这个系列之前的文章"游戏引擎网络开发者的64做与不做(一):客户端方面"中,Sergey介绍了游戏引擎添加网络支持时在客户端方面的注意点.本文,Sergey则将结合实战 ...

  9. Xcode 创建静态库和动态库

    1.linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 静态库:这类库的名字一般是libxxx.a:利用静态函数库编译成的文件 ...

  10. iOS后台如何保持socket长连接和数据传输

    工程中使用tcp长连接来和服务端进行数据传输,在IOS平台上,由于苹果的后台机制,会有以下问题: 当程序退到后台的时候,所有线程被挂起,系统会回收所有的socket资源,那么socket连接就会被关闭 ...