`
java-mans
  • 浏览: 11420831 次
文章分类
社区版块
存档分类
最新评论

HDU-1272-小希的迷宫

 
阅读更多

HDU-1272-小希的迷宫

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

基本的并查集

#include<iostream>
#include<cstdio>
using namespace std;
#define N 100010
int f[N];
int mark[N];
int find(int x)
{
	int r=x;
	while(f[r]!=r)
	r=f[r];
	f[x]=r;
	return f[x];
}
void merege(int x,int y)
{
	f[x]=y;
}
int main()
{
	int min,max;
	int a,b,flag,aa,bb,count,i;
	while(scanf("%d%d",&a,&b)!=EOF)
	{
		if(a==-1&&b==-1)
		break;
		if(a==0&&b==0)
		{
			printf("Yes\n");
			continue;
		}
		flag=0;
		for(i=1;i<100010;i++)
		f[i]=i;
		memset(mark,0,sizeof(mark));
		max=-1;
		min=99999999;
		while(a||b)
		{
			if(a>max)
			max=a;
			if(b>max)
			max=b;
			if(a<min)
			min=a;
			if(b<min)
			min=b;
			mark[a]=mark[b]=1;
			aa=find(a);
			bb=find(b);
		    if(aa==bb)
			flag=1;
			else
			merege(aa,bb);
			scanf("%d%d",&a,&b);
		}
		if(flag)
		{
	        printf("No\n");
			continue;
		}
		count=0;
		for(i=min;i<=max;i++)
		if(mark[i]&&f[i]==i)
		count++;
		if(count==1)
		printf("Yes\n");
		else
	    printf("No\n");
	}
	return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics