HDU 1272 小希的迷宫 并查集问题
2015-04-21 16:08
232 查看
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66964#problem/M
题意:小希的迷宫问题,任意两个房间的连通问题,就是一个集合问题,应该说是一个不错的并查集模型,这里的的注意,”有且只有“的关键词,所以的判断连通分量。
代码:
题意:小希的迷宫问题,任意两个房间的连通问题,就是一个集合问题,应该说是一个不错的并查集模型,这里的的注意,”有且只有“的关键词,所以的判断连通分量。
代码:
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int pre[100010],vis[100010]; int find(int x){ int t=x; while(t!=pre[t]) t=pre[t]; while(x!=t) pre[x]=t,x=pre[x]; return t; } int main(){ //freopen("D:\\in.txt","r",stdin); int a,b; while(cin>>a>>b){ if(a==-1 && b==-1) break; if(!a && !b) {printf("Yes\n");continue;} memset(vis,0,sizeof(vis)); for(int i=0;i<=100000;i++) pre[i]=i; pre[find(a)]=find(b); vis[a]=vis[b]=1; int op=1; while(scanf("%d %d",&a,&b)){ if(!a && !b) break; if(find(a)==find(b)) op=0; if(op) pre[find(a)]=find(b),vis[a]=vis[b]=1; } int cnt=0; if(op) for(int i=1;i<=100000;i++) {//判断连通分量 if(vis[i] && pre[i]==i) cnt++; if(cnt==2) {op=0;break;} } printf("%s\n",op? "Yes":"No"); } return 0; }
相关文章推荐
- ACM学习历程—HDU 1272 小希的迷宫(并查集)
- HDU--1272 -- 小希的迷宫 [并查集] [连通图]
- 【HDU】1272 - 小希的迷宫(并查集)
- 【HDU】-1272-小希的迷宫(并查集)
- hdu1272 小希的迷宫(并查集)
- HDU 1272: 小希的迷宫(并查集)
- hdu 1272 小希的迷宫 并查集
- HDU-1272小希的迷宫,并查集?其实不用并查集;
- 小希的迷宫(hdu1272 并查集)
- HDU1272 小希的迷宫 并查集
- HDU 1272 小希的迷宫 并查集
- hdu 1272 小希的迷宫(并查集)
- hdu 1272 小希的迷宫 (并查集)
- hdu-1272 小希的迷宫【并查集】
- hdu 1272小希的迷宫(并查集判断无向图回路)
- 【并查集】hdu 1272 小希的迷宫
- hdu 1272 小希的迷宫 并查集
- hdu 1272 小希的迷宫 并查集->如何判断是否组成一串 即一棵树
- hdu_1272_小希的迷宫 (并查集)
- hdu 1272 小希的迷宫 【并查集】