HDU - 1829 A Bug's Life (并查集应用)
来源:互联网 发布:洛天依mmd动作数据 编辑:程序博客网 时间:2024/06/08 00:00
题意:判断有没有同性恋的一道题,其实也可以看成是:在一颗二叉树上是否有环
思路:在并查集的基础上,有区别的一步是:当是新的两个树合并的时候,除了将一个根设为另一颗树的根的父亲外,还要加上不同性别的一层关系,我们开新的数组,vis[i]=j表示i和j是异性,还要的是将i的根的异性伙伴与j的根合并
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 1000005;const int INF = 10000000;int fa[MAXN];int vis[MAXN];int flag,n,m;int find(int x){if (x != fa[x])fa[x] = find(fa[x]);return fa[x];}void Union(int x,int y){int fx = find(x),fy = find(y);if (fx == fy)flag = 0;else {if (vis[fx])fa[vis[fx]] = fy;if (vis[fy])fa[vis[fy]] = fx;vis[fx] = fy,vis[fy] = fx;}}int main(){int t,cas=1;;scanf("%d",&t);while (t--){scanf("%d%d",&n,&m);flag = 1;for (int i = 0; i <= n; i++)fa[i] = i,vis[i] = 0;for (int i = 0; i < m; i++){int a,b;scanf("%d%d",&a,&b);Union(a,b);}printf("Scenario #%d:\n",cas++);if (flag)printf("No suspicious bugs found!\n\n");else printf("Suspicious bugs found!\n\n");}return 0;}
0 0
- hdu 1829 A Bug's Life(并查集)
- HDU 1829 A Bug's Life (并查集)
- HDU 1829 A Bug's Life (并查集)
- HDU 1829 A Bug's Life (并查集)
- HDU-1829 A Bug's Life(并查集)
- HDU 1829 A Bug's Life(并查集)
- HDU - 1829 A Bug's Life (并查集应用)
- HDU 1829 A Bug's Life(并查集的应用)
- 并查集Hdu 1829 A Bug's Life
- HDU 1829 A Bug's Life 并查集
- HDU 1829 A Bug's Life(并查集)
- HDU 1829 A Bug's Life(种类并查集)
- hdu 1829 A Bug's Life (基础并查集)
- HDU 1829 A Bug's Life 并查集
- hdu 1829 A Bug's Life 并查集
- hdu 1829 A Bug's Life 并查集
- hdu 1829 A Bug's Life ( 并查集 )
- hdu 1829 A Bug's Life 并查集
- IANA保留地址
- 调试Release发布版程序的Crash错误(五)
- 基于阻塞模式的简易javaHTTP服务器
- 程序员技术练级攻略
- ubuntu下切换到root权限(转)
- HDU - 1829 A Bug's Life (并查集应用)
- ios申请真机调试详细解析 xcode5
- go语言http服务处理image/css/js等静态文件
- [黑马程序员]chartdemo
- SQL Server 2005安装问题(SQL Server 安装程序无法获取 ASPNET 帐户的系统帐户信息。若要继续,请重新安装 .NET Framework,然后再次运行 SQL Serve)
- Method Class.getMethod(String name, Class<?>... parameterTypes)
- 并发不是并行,它更好!
- php sphinx 高效率搜索引擎搭建(一)
- java反射机制详解 及 Method.invoke解释 getMethod