poj 2492 A Bug's Life【带权并查集】
就是给一个无向图判是否有奇环
用带权并查集来做,边权1表示连接的两个节点异性,否则同性,在%2意义下进行加法运算即可,最后判相同的时候也要%2,因为可能有负数
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1000005;
int T,n,m,f[N],s[N];
int read()
{
	int r=0,f=1;
	char p=getchar();
	while(p>'9'||p<'0')
	{
		if(p=='-')
			f=-1;
		p=getchar();
	}
	while(p>='0'&&p<='9')
	{
		r=r*10+p-48;
		p=getchar();
	}
	return r*f;
}
int zhao(int x)
{
	if(x==f[x])
		return x;
	int nw=zhao(f[x]);
	s[x]=(s[f[x]]+s[x])%2;
	return f[x]=nw;
}
int main()
{
	T=read();
	for(int cas=1;cas<=T;cas++)
	{
		n=read(),m=read();
		for(int i=1;i<=n;i++)
			f[i]=i,s[i]=0;
		bool ok=1;
		while(m--)
		{
			int x=read(),y=read(),fx=zhao(x),fy=zhao(y);
			if(fx!=fy)
			{
				f[fy]=fx;
				s[fy]=(s[y]-s[x]+1)%2;
			}
			else if((s[y]-s[x])%2==0)
				ok=0;
			// for(int i=1;i<=n;i++)
				// cerr<<f[i]<<" ";
			// cerr<<endl;
		}
		printf("Scenario #%d:\n",cas);
        if(ok)
			printf("No suspicious bugs found!\n\n");
        else
			printf("Suspicious bugs found!\n\n");
	}
	return 0;
}
poj 2492 A Bug's Life【带权并查集】的更多相关文章
- POJ 2492 A Bug's Life 带权并查集
		题意: 思路: mod2 意义下的带权并查集 如果两只虫子是异性恋,它们的距离应该是1. 如果两只虫子相恋且距离为零,则它们是同性恋. (出题人好猥琐啊) 注意: 不能输入一半就break出来.... ... 
- POJ 2492 A Bug's Life (带权并查集 && 向量偏移)
		题意 : 给你 n 只虫且性别只有公母, 接下来给出 m 个关系, 这 m 个关系中都是代表这两只虫能够交配, 就是默认异性, 问你在给出的关系中有没有与异性交配这一事实相反的, 即同性之间给出了交配 ... 
- 【POJ 1984】Navigation Nightmare(带权并查集)
		Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40 ... 
- POJ 1984 Navigation Nightmare 【经典带权并查集】
		任意门:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K To ... 
- [poj 2912] Rochambeau 解题报告 (带权并查集)
		题目链接:http://poj.org/problem?id=2912 题目: 题目大意: n个人进行m轮剪刀石头布游戏(0<n<=500,0<=m<=2000) 接下来m行形 ... 
- POJ2492 A Bug's Life 带权并查集
		分析:所谓带权并查集,就是比朴素的并查集多了一个数组,记录一些东西,例如到根的距离,或者和根的关系等 这个题,权数组为relation 代表的关系 1 和父节点不同性别,0,和父节点同性别 并查集一 ... 
- poj 1733 Parity game【hash+带权并查集】
		hash一下然后用带权并查集做模2下的前缀和 #include<iostream> #include<cstdio> #include<map> #include& ... 
- 【poj 1182】食物链(图论--带权并查集)
		题意:有3种动物A.B.C,形成一个"A吃B, B吃C,C吃A "的食物链.有一个人对N只这3类的动物有M种说法:第一种说法是"1 X Y",表示X和Y是同类. ... 
- 【POJ 1988】 Cube Stacking (带权并查集)
		Cube Stacking Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)id ... 
- poj2492A Bug's Life——带权并查集
		题目:http://poj.org/problem?id=2492 所有元素加入同一个并查集中,通过其偏移量%2将其分类为同性与异性,据此判断事件. 代码如下: #include<iostrea ... 
随机推荐
- 计算机网络系列:2M的宽带指的是下载速度么?
			本篇文章对于不懂网络的小白有点用处.避免以后闹笑话.当然.对大神来说.这都是常识了. 我相信非常多人都有过这个问题:我4M的宽带怎么下载速度才300kb/s啊啊啊.这坑爹的宽带. 我没学的时候我也会这 ... 
- npoi 加密   https://bbs.csdn.net/topics/380226272
			终于解决了,.1.用excel新建一个文件作为模板,可以是空内容,在excel中对文件进行加密,如密码为:12345. 2.在NPOI读取前,调用:Biff8EncryptionKey.Current ... 
- openstack 中国联盟公开课參会总结
			主流趋势 1. openstack defcore 互操作性认证.打通不同的openstack 厂商之间的连接 2. 首批OpenStack管理员认证(COA)将于2016年进行 3. 混合云应用广泛 ... 
- 不能选择sublime作为默认打开方式的解决办法
			Sublime Text 绿色版删除后无法设置为默认打开方式…而且网上也没有给出明确的解决办法 注册表的解决办法: 删除 HKEY_CURRENT_USER\Software\Classes\Appl ... 
- window.open() 父子页面的传值问题
			if(window.opener){//判断是否有父窗口,即打开本页面的窗口 window.opener.location.reload();//刷新父窗口 window.op ... 
- java设计模式----复合模式
			复合模式:复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题 要点: 1.MVC是复合模式,结合了观察者模式.策略模式和组合模式 2.模型使用观察者模式,以便观察者更新,同时保持 ... 
- UltraEdit中使用正则表达式-简单用法
			UltraEdit中使用正则表达式 1.认识正则表达式语法: 正则表达式 (UltraEdit Syntax): % 匹配行首 - 表明要搜索的字符串一定在行首. $ 匹配行尾 - 表明要搜索的字符串 ... 
- appium支持的版本
			appium 支持4.2以上的版本 2.3-4.1的版本的支持通过Selendroid实现 
- 最长公共字序列.cpp
			<span style="color:#993399;">/* By yuan 2014/6/21 At nwpu.xf 1041.最长公共子序列 时限:1000ms ... 
- MapReduce算法形式六:只有Map独自作战
			案例六:Map独自直接输出 之前一直没有用过这个map独自输出的模式,就算是输出一些简单的我也会经过一次reduce输出,但是,发现这个map输出的结果跟我预想的有点不一样,我一直以为shuffle的 ... 
