A Bug's Life(带权并查集)
2015-07-31 16:52
162 查看
hdu1829 这是一道比较简单 好理解的并查集
#include <iostream> #include <stdio.h> #include <math.h> #include <algorithm> #include <queue> #include <stack> #include <vector> #include <string> #include <string.h> #include <map> #include <set> using namespace std; int f[2001],r[2001]; int n,k; int findfa(int x) { if(x==f[x]) { return x; } else { int t=f[x]; f[x]=findfa(f[x]); r[x]=(r[x]+r[t]+2)%2; return f[x]; } } void bing(int x,int y) { int tx=findfa(x),ty=findfa(y); if(tx!=ty) { f[ty]=tx; r[ty]=(r[x]-r[y]+1+2*2)%2; } } int istrue(int x,int y) { if(x>n||y>n||x==y) { return 0; } int tx=findfa(x),ty=findfa(y); if(tx!=ty)return 1; else { if(r[x]==(r[y]+1)%2) { return 1; } else return 0; } } int main() { int i,t,ans,tt=1,x,y; scanf("%d",&t); while(t--) { for(i=1;i<=2001;i++) { f[i]=i;r[i]=0; } scanf("%d%d",&n,&k); ans=0; for(i=1;i<=k;i++) { scanf("%d%d",&x,&y); if(istrue(x,y)) { bing(x,y); } else ans++; } printf("Scenario #%d:\n",tt++); if(ans!=0)printf("Suspicious bugs found!\n"); else printf("No suspicious bugs found!\n"); printf("\n"); } return 0; }
相关文章推荐
- CF_405B_DominoEffect
- [JQuery学习笔记]——之二
- 20150728 JavaScript进阶学习笔记(下)
- Andorid中对HTML格式数据进行解码
- 20150727 Javascript进阶学习笔记(上)
- HTML总结
- 20150727 JavaScript入门学习笔记
- 关于iOS控件全局样式统一设定问题
- CSS3 抛物线 加入购物车
- 20150726 CSS Sprite雪碧图应用
- HTML标签
- jquery 倒计时
- 20150726 Web前端开发基础html+css
- 【CSS学习】CSS Text(文本)
- form表单无刷新上传文件
- jQuery 插件集锦——《导航篇》
- 20150725 前端开发工具DreamWeaver及Sublime方法技巧总结
- 20150724 CSS3学习笔记(下)
- HTML 标签列表(3)
- js多行文本的处理方法