题目:小希的迷宫
题意:
——小希现在给你一张图(无向边),让你判断任意两个房间是否有且仅有一条路径可以相通(除非走了回头路)。
代码:
#include<stdio.h>
#include<string.h>
#define N 100005
int f[N],book[N];
int flag;
int find(int x)
{
if(x!=f[x])
f[x]=find(f[x]);
return f[x];
}
void merge(int x,int y)
{
int tx=find(x);
int ty=find(y);
if(tx!=ty)
f[ty]=tx;
else
flag=1;
}
int main()
{
while(1)
{
flag=0;
int a,b,i;
scanf("%d %d",&a,&b);
if(a==-1&&b==-1)
break;
if(a==0&&b==0)
printf("Yes\n");
else
{
for(i=1;i<=N;i++)
f[i]=i;
memset(book,0,sizeof(book));
merge(a,b);
book[a]=1;
book[b]=1;
while(~scanf("%d %d&