hdu1272 小希的迷宫
2013-08-26 11:56
344 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272
题解:任意两个房间有且仅有一条路径可以相通,判断是否是一棵树(不存在回路)
#include <stdio.h>
#include <string.h>
#define MAXN 100002
int father[MAXN],flag[MAXN],sig;
int find(int x)
{
while(x!=father[x])
x=father[x];
return father[x];
}
void Union(int x,int y)
{
int fx=find(x);
int fy=find(y);
if (fx!=fy)
{
father[fx]=fy;
}
else
sig=1;//如果有共同的根节点,存在回路
}
int main()
{
int x,y,i,ans;
while(scanf("%d %d",&x,&y)&&((x+y)!=-2))
{
ans=0;
sig=0;
if(x+y==0)//空树
{
printf("Yes\n");
continue;
}
for(i=0;i<MAXN;++i)
{
father[i]=i;
flag[i]=0;
}
Union(x,y);
flag[x]=flag[y]=1;
while(scanf("%d %d",&x,&y))
{
if(x+y==0)
break;
Union(x,y);
flag[x]=1;
flag[y]=1;
}
if(sig==1)
{
printf("No\n");
continue;
}
for(i=1;i<MAXN;++i)
{
if(flag[i]&&father[i]==i)
ans++;
}
if(ans>1)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}
题解:任意两个房间有且仅有一条路径可以相通,判断是否是一棵树(不存在回路)
#include <stdio.h>
#include <string.h>
#define MAXN 100002
int father[MAXN],flag[MAXN],sig;
int find(int x)
{
while(x!=father[x])
x=father[x];
return father[x];
}
void Union(int x,int y)
{
int fx=find(x);
int fy=find(y);
if (fx!=fy)
{
father[fx]=fy;
}
else
sig=1;//如果有共同的根节点,存在回路
}
int main()
{
int x,y,i,ans;
while(scanf("%d %d",&x,&y)&&((x+y)!=-2))
{
ans=0;
sig=0;
if(x+y==0)//空树
{
printf("Yes\n");
continue;
}
for(i=0;i<MAXN;++i)
{
father[i]=i;
flag[i]=0;
}
Union(x,y);
flag[x]=flag[y]=1;
while(scanf("%d %d",&x,&y))
{
if(x+y==0)
break;
Union(x,y);
flag[x]=1;
flag[y]=1;
}
if(sig==1)
{
printf("No\n");
continue;
}
for(i=1;i<MAXN;++i)
{
if(flag[i]&&father[i]==i)
ans++;
}
if(ans>1)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}
相关文章推荐
- HDU - 1272 - 小希的迷宫
- hdu 1272 小希的迷宫
- 小希的迷宫 hdu 1272(并查集)
- HDU 1272 小希的迷宫(并查集)
- HDU 1272--小希的迷宫【并查集,有值得注意的地方】
- hdu——1272——小希的迷宫(数)
- hdu 1272 小希的迷宫
- HDU 1272 小希的迷宫
- HDU 1272 小希的迷宫
- HDU 1272 小希的迷宫 (并查集)
- hdu1272_小希的迷宫
- HDU 1272 小希的迷宫
- hdu-1272 小希的迷宫
- HDU-1272 小希的迷宫(并查集)
- Hdu1272 小希的迷宫 【并查集】
- HDU 1272 小希的迷宫 (并查集)
- HDU 1272-小希的迷宫
- HDU-1272 小希的迷宫
- HDU 1272 小希的迷宫
- HDU 1272 小希的迷宫 并查集 (判断任意2个点是否有且仅有一条路径可以相通)