现在的位置: 首页 > 综合 > 正文

hdu 1272 小希的迷宫

2018年12月29日 ⁄ 综合 ⁄ 共 701字 ⁄ 字号 评论关闭

数据输入有点坑人

并差集水题,判断图连通且没有环

 

 

 

#include<stdio.h>
int f[100003],mix[100003];
int find(int x)
{
	if(x!=f[x])
		f[x]=find(f[x]);
	return f[x];
}
int main()
{
    int i,j,t,a,b,n,m,num,f1,f2,st,end,flag;
    while( scanf("%d%d",&n,&m)!=EOF)
    {
        flag=1;
        if(m==-1&&n==-1)break;
        if(m==0&&n==0){printf("Yes\n");continue;}
        st=100001;end=-1;
		for(i=0;i<100000;i++)
		{f[i]=i;mix[i]=0;}
		for(;;)
		{
			
			mix[n]=mix[m]=1;
			if(n<st)st=n;
			if(m<st)st=m;
			if(n>end)end=n;
			if(m>end)end=m;
			f1=find(n);
			f2=find(m);
			if(f1==f2)
			{flag=0;break;}
			else
				f[f1]=f2;
			scanf("%d%d",&n,&m);if(m==0&&n==0)break;
			
		}
		if(flag==0)
		{
			while(1)
			{scanf("%d%d",&n,&m);
			if(m==0&&n==0)break;}
		}
		else
			for(i=st+1;i<=end;i++)
			{
				if(mix[i]==1 &&find(i)!=find(st))
				{flag=0;break;}
			}
			if(flag)
				printf("Yes\n");
			else
				printf("No\n");
    }
	
	
    return 0;
}

 

【上篇】
【下篇】

抱歉!评论已关闭.