种类并查集,基本思想是每次压缩路径都必须同时更新子节点和根节点的关系,这种关系是通过子节点和父亲节点的关系,以及父亲节点与根节点的关系运算出来。

压缩路径的findme();参考了大神的代码,做的第二个种类并查集....

#include<stdio.h>
#include<string.h>
int cri[];//记录每一个元素的根节点
int pp[];//记录元素与根节点的关系,0代表盟友,1代表敌人
int findme(int a)
{
if(a==cri[a])
{
return a;
}
int temp=cri[a];//temp用于记录递归前该节点的父亲节点
cri[a]=findme(cri[a]);//找到a节点的根节点
pp[a]=(pp[temp]+pp[a])&;//通过a节点的父亲节点与根节点的关系以及a节点和其父亲节点的关系更新得到a节点和新的根节点的关系
return cri[a];
}
void link(int a, int b)
{
int ttmp,tmpa,tmpb;
tmpa=findme(a);
tmpb=findme(b);
if(tmpa!=tmpb)
{
cri[tmpb]=tmpa;
pp[tmpb]=(pp[a]+pp[b]+)&;
}
}
int main()
{
int t,n,m,a,b;
char ca;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(pp,,sizeof(pp));
for(int i=;i<=n;i++)
{
cri[i]=i;
}
getchar();
for(int i=;i<m;i++)
{
ca=getchar();
if(ca=='D')
{
scanf("%d%d",&a,&b);
getchar();
if(a==b)
continue;
link(a,b);
}
else
{
scanf("%d%d",&a,&b);
getchar();
if(findme(a)==findme(b))
{
if((pp[a]+pp[b])&)
{
printf("In different gangs.\n");
}
else
{
printf("In the same gang.\n");
}
}
else
{
printf("Not sure yet.\n");
}
}
}
}
return ;
}

POJ 1703的更多相关文章

  1. poj.1703.Find them, Catch them(并查集)

    Find them, Catch them Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I6 ...

  2. POJ 1703 Find them, Catch them(种类并查集)

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 41463   Accepted: ...

  3. 【原创】POJ 1703 && RQNOJ 能量项链解题报告

    唉 不想说什么了 poj 1703,从看完题到写完第一个版本的代码,只有15分钟 然后一直从晚上八点WA到第二天早上 最后终于发现了BUG,题目要求的“Not sure yet.”,我打成了“No s ...

  4. K - Find them, Catch them POJ - 1703 (带权并查集)

    题目链接: K - Find them, Catch them POJ - 1703 题目大意:警方决定捣毁两大犯罪团伙:龙帮和蛇帮,显然一个帮派至少有一人.该城有N个罪犯,编号从1至N(N<= ...

  5. POJ 2236 Wireless Network ||POJ 1703 Find them, Catch them 并查集

    POJ 2236 Wireless Network http://poj.org/problem?id=2236 题目大意: 给你N台损坏的电脑坐标,这些电脑只能与不超过距离d的电脑通信,但如果x和y ...

  6. 【并查集】模板 + 【HDU 1213、HDU 1232、POJ 2236、POJ 1703】例题详解

    不想看模板,想直接看题目的请戳下面目录: 目录: HDU 1213 How Many Tables[传送门] HDU 1232 畅通工程 [传送门] POJ 2236 Wireless Network ...

  7. 种类并查集(POJ 1703)

    1703 -- Find them, Catch them http://poj.org/problem?id=1703 题目大意:有2个敌对帮派,输入D a b表示a,b在不同帮派,输入A a b表 ...

  8. hdu - 1829 A Bug's Life (并查集)&&poj - 2492 A Bug's Life && poj 1703 Find them, Catch them

    http://acm.hdu.edu.cn/showproblem.php?pid=1829 http://poj.org/problem?id=2492 臭虫有两种性别,并且只有异性相吸,给定n条臭 ...

  9. poj 1703 Find them, Catch them(并查集)

    题目:http://poj.org/problem?id=1703 题意:一个地方有两个帮派, 每个罪犯只属于其中一个帮派,D 后输入的是两个人属于不同的帮派, A后询问 两个人是否属于 同一个帮派. ...

  10. (并查集 带关系)Find them, Catch them -- poj -- 1703

    链接: http://poj.org/problem?id=1703 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3676 ...

随机推荐

  1. python file operation

    file.open(name[,mode[,buffering]]) 模式的类型有: r 默认只读 w     以写方式打开,如果文件不存在则会先创建,如果文件存在则先把文件内容清空(truncate ...

  2. html之p标签

    p标签定义段落 p元素会自动在其前后创建一些空白,浏览器会自动添加这些空间. 效果图:

  3. SQL2008安装自动退出

    一同事安装sql 2008 然后删除过,后来再也装不上了,安装SQL2008操作执行到安装支持文件的时候就会出现安装过程自动退出的现象. 网上很多人说需要卸载,我看原因不一定是这个,因为根本没有安装成 ...

  4. Ruby Class

    类定义: class 类名 类定义 end ※类名大写字母开始!!! 构造方法(initialize) 类名调用new方法的时候,触发的一个方法. def initialize(my_name = & ...

  5. [转]利于ThreadLocal管理Hibernate Session

    摘自http://aladdin.iteye.com/blog/40986 在利用Hibernate开发DAO模块时,我们和Session打的交道最多,所以如何合理的管理Session,避免Sessi ...

  6. 【转】Asp.Net MVC3 简单入门详解过滤器Filter

    原文地址:http://www.cnblogs.com/boruipower/archive/2012/11/18/2775924.html 前言 在开发大项目的时候总会有相关的AOP面向切面编程的组 ...

  7. Remove LUN from OCFS2

    # ocfs2_hb_ctl -I -d /dev/mapper/backup2-backup2 508C2154503344E78ACD6CD6B000000: 2 refs #The previo ...

  8. .net下MD5算法和加盐

    MD5方法: public static string GetMD5(string sDataIn)        {            MD5CryptoServiceProvider md5 ...

  9. C#委托和事件讲解

    委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每 ...

  10. /proc 文件系统

    linux提供了一种特殊的文件系统procfs,通常以/proc目录的形式呈现.该目录中包含了许多特殊文件用来对驱动程序和内核信息进行更高层的访问.只要应用程序有正确的访问全息,就可以通过读写这些文件 ...