首页 > 代码库 > HDU1272 小希的迷宫 (并查集)
HDU1272 小希的迷宫 (并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272
注意问题:
1、不能成环,即每次输入的两个数的根节点不能相同;
2、只有一个迷宫,即根节点数目唯一;
3、注意当只输入“0 0” 时要输出"Yes";
4、状态压缩用递归回栈溢出。
参考代码:
#include<stdio.h> int fa[100001]; int find(int u) { int s; s=u; while (fa[u]!=u)u=fa[u]; while (fa[s]!=s){fa[s]=u;s=fa[s];} return u; } int main() { int u,v,x,y,n,m,i,k; bool bo; scanf("%d%d",&u,&v); while (u!=-1) { if (u!=0) { for (i=1;i<=100000;i++) fa[i]=i; bo=true; while (u) { x=find(u);y=find(v); if (x==y) {bo=false;} else fa[x]=y; scanf("%d%d",&u,&v); } if (!bo) printf("No\n"); int j; if(bo) { for (i=1;i<=100000;i++) if (find(i)!=i) break; for (j=i+1;j<=100000;j++) if ((find(j)!=j)&&(find(j)!=find(i))) { printf("No\n"); bo=false; break; } } if (bo) printf("Yes\n"); } else printf("Yes\n"); scanf("%d%d",&u,&v); } return 0; }<strong> </strong>
同类题请参考:http://blog.csdn.net/yzj577/article/category/2432227
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。