hdu_1272 小希的迷宫
来源:互联网 发布:sm2246xt开卡软件 编辑:程序博客网 时间:2024/05/21 10:51
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>using namespace std;#define N 100005int Father[N];int visit[N];void Make_set(int n){ for(int i=0; i<=n; i++) Father[i] = i;}int Find_set(int x){ int pre,temp,ans; pre = x; while(x != Father[x]) { x = Father[x]; } ans = x; while(pre != Father[pre]) { temp = Father[pre]; Father[pre] = ans; pre = temp; } return ans;}void Union_set(int a,int b){ int x = Find_set(a); int y = Find_set(b); Father[y] = x;}int main(){ int n,m,i,j,k,temp1,temp2,flag,sum; while(cin>>temp1>>temp2) { memset(visit,0,sizeof(visit)); visit[temp1] = visit[temp2] = 1; Make_set(N); flag = 0, sum = 0; if(temp1==-1&&temp2==-1) break; if(temp1==0&&temp2==0) { cout<<"Yes"<<endl; continue; } if(Find_set(temp1)==Find_set(temp2)) flag = 1; else Union_set(temp1,temp2); while(cin>>n>>m) { if(n==0&&m==0) break; visit[n] = visit[m] = 1; if(flag) continue; if(Find_set(n)==Find_set(m) || n==m) flag = 1; else Union_set(n,m); //cout<<Find_set(n)<<" "<<Find_set(m)<<endl; } for(i=1;i<=N;i++) if(visit[i] && i == Find_set(i)) sum++; if(!flag&&sum==1) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0;}
0 0
- hdu_1272 小希的迷宫
- hdu_1272-小希的迷宫(经典并查集)
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 写给25岁,懈怠的自己
- visio画图常见问题解答
- BabyStepGiantStep学习笔记
- 正则表达式的使用
- 第六届蓝桥杯C/C++A组第三题解答
- hdu_1272 小希的迷宫
- 常用算法之动态规划算法
- 重载与命名空间
- MySQL 数据类型
- su oracle和su - oracle的区别
- Android 的系统架构
- Majority Element leetcode[169]
- Smart SVN破解版安装教程
- java毫秒与日期之间的相互转换