会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
windmissing
博客园
首页
新随笔
管理
HDU1272 小希的迷宫 并查集
/*并查集的应用,注意点的个数为0的时候,注意输入*/ #include <iostream> #include "UFS.h" using namespace std; UFS ufs; bool flag[MAXN]={0}, f; int cnt_e, cnt_v; void init(); int main() { int n,m; init(); while(cin>>n>>m) { if(m==-1&&n==-1)return 0; if(m==0&&n==0) { getchar();getchar(); /*条件:1.ufs不冲突2.v=e+1(v=0时例外)*/ if(f) cout<<"No"<<endl; else if(cnt_v==0)cout<<"Yes"<<endl; else if(cnt_v!=cnt_e+1)cout<<"No"<<endl; else cout<<"Yes"<<endl; init(); } else { if(flag[m] == 0) { flag[m] = 1; cnt_v++; } if(flag[n] == 0) { flag[n] = 1; cnt_v++; } m = ufs.Find(m); n = ufs.Find(n); if(m==n) f=1; else { ufs.Union(m, n); cnt_e++; } } } return 0; } void init() { ufs.clear(); memset(flag, 0, sizeof(flag)); f = 0; cnt_v = 0; cnt_e = 0; }
posted @
2012-01-18 18:04
windmissing
阅读(
93
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部