HDU 1272 小希的迷宫
来源:互联网 发布:淘宝冠军 编辑:程序博客网 时间:2024/06/05 07:28
/* hdu 1272 小希的迷宫 */#include<stdio.h> #include<string.h> int nn; //用来判断是否有重复的连通int ff[100005];//ff[x]表示x的父节点 int qq[100005];//标记数组int ss[100005];//ss[x]表示x的秩void ii(int n) //初始化 { for (int i=0;i<n;i++) {ff[i] = i;ss[i] = 1; }} int dd(int x) //带路径压缩的查找 { if (x!=ff[x]) {ff[x] = dd(ff[x]); }return ff[x];} void cc(int a,int b) //按秩合并 { int ta=dd(a);int tb=dd(b);if (ta != tb){if (ss[ta] >= ss[tb]){ff[tb]=ta;if(ss[ta] == ss[tb])ss[ta]++;}elseff[ta] = tb;}elsenn=1;} int main() { int i,m,a,b,t,k,j; while(scanf("%d%d",&a,&b)&&a!=-1&&b!=-1) { if (a==0 && b==0 ) {printf("Yes\n"); }ii(100000); memset(qq,0,sizeof(qq));nn=0;cc(a,b);qq[a]=qq[b]=1;while(scanf("%d%d",&a,&b),a&&b) {cc(a,b);qq[a]=qq[b]=1;} for (i=0,t=0;i<=100005;i++){if (qq[i]==1 && (dd(i)==i)) //判断是不是连通********************************很重要 有两个根节点的情况就是两个根没有连起来 {t++;}}if (t==1 && !nn) //nn判断是不是成环 *******************************很重要{ printf("Yes\n");}elseprintf("No\n"); } return 0; }
需要考虑这种情况,输入的两个数字与大集体没有连接,就他俩单独成一个,显然这样是不可以的,所以标记的作用与检测顶点的作用体现出来了。
#include <iostream>#include <algorithm>using namespace std;int ff[100005];int ss[100005];int qq[100005];int res ;void ii(int x){ for(int i=0;i<x;i++) { ff[i] = i; ss[i] = 1; qq[i] = 0; }}int dd(int x){if(x != ff[x])ff[x] = dd(ff[x]);return ff[x];}void cc(int a,int b){int ta = dd(a);int tb = dd(b);if(ta != tb){ ff[ta] = tb;}elseres = 1;}void main(){ int i,j,k; int m,t;int n,v,w;int cnt =0;while(cin>>m>>n,m+1 || n+1){if(m==0&&n==0){cout<<"Yes"<<endl;continue;}ii(100005);res =cnt=0; cc(m,n);qq[m]=qq[n]=1;while(cin>>m>>n,m&&n){cc(m,n);qq[m]=qq[n]=1;}for(i=1;i<100005;i++){if(qq[i]==1 && (dd(i) == i)){cnt++;}}if(res || cnt != 1)cout<<"No"<<endl;elsecout<<"Yes"<<endl;}}
0 0
- 小希的迷宫 hdu 1272
- HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫
- HDU-1272-小希的迷宫
- HDU 1272 小希的迷宫
- [tree]hdu 1272 小希的迷宫
- HDU 1272 小希的迷宫
- Hdu 1272 小希的迷宫
- HDU-1272:小希的迷宫
- HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫
- HDU 1272 小希的迷宫
- HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫
- Spark(三) -- Shark与SparkSQL
- AM335x GPMC NAND时序计算和读写性能测试
- HOJ1867 经理的烦恼【树状数组】
- 菜鸟的安卓实习之路---layoutParams
- Ubuntu下安装Apache+PHP+MySQL
- HDU 1272 小希的迷宫
- elasticsearch快照和恢复
- VC++中双缓冲技术画图
- java 注解
- 做一个不断积累的人
- memcached缓存技术简介
- 程序员应该具备的十个代码习惯
- Matlab绘图基本控制命令
- Leetcode:Insert Interval