hdu1272 小希的迷宫 并查集
来源:互联网 发布:数据分析作图软件 编辑:程序博客网 时间:2024/06/04 19:25
并查集不多说,这道题主要注意
1.坑爹的输入输出,0 0要输出一个Yes
2.判断是森林还是树。我的判断方法是看点和边的数量关系。节点数-1 == 边数 是为森林的必要条件
#include<iostream>#include<iomanip>#include<cstdio>#include<cstring>#include<sstream>#include<stack>#include<queue>#include<fstream>#include<algorithm>#include<map>#include<set>#include<vector>#include<cmath>#define CLR(x) memset(x,0,sizeof(x))#define ll long long#define eps 1e-6using namespace std;bool visited[1111111];#define MAXPOINTS 1111111int n;void sinit();int sfind(int a);int pre[MAXPOINTS];void sinit(){ for (int i=0;i<n;i++) pre[i]=i;}int sfind(int a){ if (a!=pre[a]) pre[a]=sfind(pre[a]); return pre[a];}bool smix(int a,int b) //当前两点已经在同集中返回false{ int sa(sfind(a)),sb(sfind(b)); if (sa==sb) return false; pre[sb]=sa; return true;}int main(){ cin.sync_with_stdio(false); //fstream T("test.txt"); //cin.rdbuf(T.rdbuf()); int a,b; n=1111111; while (cin>>a>>b,a!=-1||b!=-1) { if (a==0&&b==0) { cout<<"Yes"<<endl; continue; } int e(1); int p(2); CLR(visited); sinit(); smix(a,b); visited[a]=visited[b]=true; bool flag(false); while (cin>>a>>b,a!=0||b!=0) { e++; if (!visited[a]) { visited[a]=true; p++; } if (!visited[b]) { visited[b]=true; p++; } if (!flag&&!smix(a,b)) flag=true; } if (!flag&&e==p-1) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0;}
0 0
- hdu1272(小希迷宫 并查集)
- HDU1272 小希的迷宫 并查集
- 【hdu1272】 小希的迷宫 (并查集)
- 小希的迷宫 hdu1272 并查集
- hdu1272小希的迷宫(并查集)
- 【并查集】-HDU1272-小希的迷宫
- hdu1272小希的迷宫 基础并查集
- hdu1272 小希的迷宫(并查集)
- hdu1272 小希的迷宫(并查集)
- HDU1272小希的迷宫--并查集入门题
- HDU1272 小希的迷宫 【并查集】
- Hdu1272 - 小希的迷宫 - 并查集
- HDU1272 小希的迷宫 (并查集)
- HDU1272 小希的迷宫(基础并查集)
- hdu1272 - 小希的迷宫 (基础并查集)
- hdu1272 -- 小希的迷宫(并查集)
- hdu1272小希的迷宫(并查集)
- HDU1272 小希的迷宫 并查集
- 指定长度的单链表,删除和插入第i个结点
- Leetcode[4] Median of Two Sorted Arrays
- SQL DDL语句
- CentOS 7 版本如何实现开机以图形界面启动
- Android 各大网络请求库的比较及实战
- hdu1272 小希的迷宫 并查集
- 常用软件安装与配置小结
- Reverse Integer
- spring自带定时器
- spark:学习杂记--38
- linux后台运行和关闭、查看后台任务
- 作业5.19
- 第三章P123作业T29,30,32,36,38
- 读取Assets中的文件数据