HDU ACM 1272.小希迷宫(并查集)
2013-04-25 18:29
106 查看
/********************************** 题目大意:把是房间之间有路的房间编码放到一组,n个编码可以分成几组,并判断是否满足 条件一:任何两个房间只能有一条路连接;条件二:所有房间之间都有路连接 题目解析:运用并查集把有关系的人合并到一组,最后遍历数组father[i],查看i根结点是否为他自己; 错误分析:1. 初始化的函数init()中i<M,而不是i<=M,不然就会导致ACCESS_VIOLATION (由于指针、数组下标越界造成的) 2.这题与HDU 1213题相似,但需要两的标记rank1,rank2,和一个标记数组sign[M], 3.头文件处必须添加#pragma comment(linker,"/STACK:102400000,102400000"), *********************************/ #include<cstdio> #include<iostream> #pragma comment(linker,"/STACK:102400000,102400000") //必须添加不然就会造成栈溢出; #define M 100100 using namespace std; int father[M]; //father[i]为i的父结点,rank[i]为i所属集合的总元素数 void init() //初始化,注意此时的函数init()有参数传递 { int i; for(i=0;i<M;i++) { father[i]=i; } } int find(int x) //查找根结点 { if(x!=father[x]) father[x]=find(father[x]); // 压缩路径,减少查询时运行的时间,使结点都指向根结点 return father[x]; } int Union(int x,int y,int rank1) // 合并 { x=find(x); //查找x的根结点 y=find(y); if(x==y) rank1=1; //标记之一:若两个元素在一个集合中时(即根结点相同),则不满足题目要求-----任何两个房间只能有一条路连接; if(x!=y) //若两个x,y的根结点不同(即两个元素不再一个集合中),则合并两个集合 { father[x]=y; } return rank1; } int main() { int i,x,y,rank1,rank2; while(scanf("%d %d",&x,&y),x!=-1&&y!=-1) { if(!x&&!y) //当一组测试只有(0,0)时,满足题意,输出yes; { printf("Yes\n"); continue; } init(); rank1=0;rank2=0; int sign[M]={0}; sign[x]=sign[y]=1; rank1=Union(x,y,rank1); while(scanf("%d %d",&x,&y),x!=0||y!=0) { sign[x]=sign[y]=1; rank1=Union(x,y,rank1); } for(i=1;i<M;i++) //判断是否只有一个根结点(即全部结点在一个集合里,才满足题目条件之一) { if(father[i]==i&&sign[i]==1) rank2++; } if(rank1==0&&rank2==1)printf("Yes\n"); //判断两个条件是否都满足 else printf("No\n"); } return 0; }
相关文章推荐
- HDU ACM 1272 小希的迷宫(并查集)
- hdu 1272 小希的迷宫 并查集
- HDU1272 小希的迷宫 并查集
- HDU-1272 小希的迷宫(并查集)
- HDU 1272--小希的迷宫【并查集,有值得注意的地方】
- Num 21 : HDOJ: 题目1272 : 小希的迷宫 ( 并查集问题 )
- HDU - 1272 小希的迷宫(看似并查集的水题)
- hdoj 1272 小希的迷宫 又一个并查集的简单应用
- 【并查集】hdu 1272 小希的迷宫
- hdu_1272_小希的迷宫 (并查集)
- Hdu1272 小希的迷宫 【并查集】
- hdu 1272 小希的迷宫 并查集
- HDU 1272 小希的迷宫 (并查集)
- HDU 1272 小希的迷宫 并查集问题
- 杭电 1272 小希的迷宫 并查集 无向图是否为树
- hdu 1272 小希的迷宫(简单并查集)
- hd1272 小希的迷宫(并查集)
- hdu_1272-小希的迷宫(经典并查集)
- HDU 1272 小希的迷宫(并查集)
- HDU - 1272 小希的迷宫(并查集)