kuangbin专题五 并查集 HDU1272 小希的迷宫
来源:互联网 发布:insert mysql自增 编辑:程序博客网 时间:2024/05/21 14:50
题意:
中文题
题解:
任意两个房间有且仅有一条路径可以相通,可以用并查集来做,如果输入的两个房间号的祖宗是一样的话,就说明,成环了,输出No,还有一种情况是不成环,森林的情况,比如:
1 2 3 4 0 0
正确的输出为No。
只要在最后跑一边for循环检查是否出现两个祖宗就可以知道是否出现森林了。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int MAXN=1e5+7;int f[MAXN];bool vis[MAXN];void init(){ for(int i=0;i<=1e5;i++) f[i]=i;}int find(int p){ while(p!=f[p]) { f[p]=f[f[p]]; p=f[p]; } return p;}bool Union(int p,int q){ int P=find(p); int Q=find(q); if(P==Q) return true; else { f[Q]=P; } return false;}int main() { int n; while(1) { int a,b,MAX=0; init(); memset(vis,false,sizeof(vis)); bool mark=false,ans=false; while(~scanf("%d%d",&a,&b)) { if(a==-1&&b==-1) { mark=true; break; } MAX=max(max(MAX,a),b); vis[a]=true; vis[b]=true; if(a==0&&b==0) break; if(Union(a,b)) ans=true; } int sum=0; for(int i=1;i<=MAX;i++) if(vis[i]&&f[i]==i) sum++; if(mark) break; if(ans||sum>1) printf("No\n"); else printf("Yes\n"); }}
阅读全文
0 0
- kuangbin专题五 并查集 HDU1272 小希的迷宫
- hdu 1272 小希的迷宫[kuangbin带你飞]专题五 并查集
- hdu1272(小希迷宫 并查集)
- HDU1272 小希的迷宫 并查集
- 【hdu1272】 小希的迷宫 (并查集)
- 小希的迷宫 hdu1272 并查集
- hdu1272小希的迷宫(并查集)
- 【并查集】-HDU1272-小希的迷宫
- hdu1272小希的迷宫 基础并查集
- hdu1272 小希的迷宫(并查集)
- hdu1272 小希的迷宫(并查集)
- HDU1272小希的迷宫--并查集入门题
- HDU1272 小希的迷宫 【并查集】
- Hdu1272 - 小希的迷宫 - 并查集
- HDU1272 小希的迷宫 (并查集)
- HDU1272 小希的迷宫(基础并查集)
- hdu1272 - 小希的迷宫 (基础并查集)
- hdu1272 -- 小希的迷宫(并查集)
- mtk平台dsi clock设置
- Android framework系统默认设置修改
- jdk源码分析--ArrayList
- activiti工作流 部门会签 multiInstance配置
- openstreetmap website部署
- kuangbin专题五 并查集 HDU1272 小希的迷宫
- Android Anatomy and Physiology
- Qml文件的两种加载方式|启动Qt quick app的两种方法
- springmvc传list参数
- 算法导论第三版 习题5.2-1和5.2-2 HIRE-ASSISTANT问题
- 判断横竖屏和切换
- linux网络编程2
- 2016 年度开源中国新增开源软件排行榜 TOP 100
- 安卓系统设置之Wifi连接