hdu 1272 小希的迷宫
来源:互联网 发布:科赫兄弟 知乎 编辑:程序博客网 时间:2024/04/30 10:11
并查集判断给出的图是否是树
判断是否有环、未给出点数判断集合数是否大于1
判断有环:若输入两点的根相同则有环
判断所有点是否都在同一集合内:合并过程中把出现的点都标记,把最小和最大的找到,枚举在该范围内的点,看有几个根,有几个根就有几个集合。
#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn=100010;int r[maxn],n,m,T,vis[maxn],minn,maxx,flag;void init(){ for(int i=0;i<=n;i++) r[i]=i; memset(vis,0,sizeof vis); minn=maxn,maxx=-1,flag=1;}int root(int a){ if(r[a]==a) return a; return r[a]=root(r[a]);}void merge(int a,int b){ int ra=root(a),rb=root(b); if(ra!=rb) r[ra]=rb; else flag=0;//有环}int main(){ int a,b,tmp,i; n=maxn-5; init(); while(~scanf("%d%d",&a,&b)) { if(a==-1&&b==-1) break; if(a==0&&b==0) { tmp=0; for(i=minn;i<=maxx&&flag;i++) { if(!vis[i]) continue; if(r[i]==i) tmp++; if(tmp>1) flag=0;//不是连通图 } if(!flag) printf("No\n"); else printf("Yes\n"); init(); } else { merge(a,b); minn=min(minn,a); minn=min(minn,b); maxx=max(maxx,a); maxx=max(maxx,b); vis[a]=vis[b]=1; } } return 0;}
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 小希的迷宫
- DOM编程之document对象
- openjudge物质分解记录
- UVa 152 - Tree's a Crowd
- 窗外,是一个雨季
- 吃糖果
- hdu 1272 小希的迷宫
- 时光静寂,岁月轻柔
- HDU2089 不要62 数位DP
- 网络越狱
- 滑雪
- 女王大人的水题
- web压力测试--Jmeter与Badboy的结合
- java实现判断一个数是否为素数
- step into uml