给出一些敌人的队,如

a -b

c -d

a-c

给他们分成两组,那么以上就可以分为a,d一组,bc一组。但如果敌人关系是这样的:

a-b

c-d

a-c

b-c

则a-b-c两两为敌人,这样就分不成两组了。

现在就是给出这么一堆关系,让你判断是否可以分成两组。

如何应用并查集呢?思路就是,用一个数组记录敌人的关系,这样可以O(1)时间内找到敌人。

(1)初始化为-1

(2)x-y为敌人,那么enemy[x]若为-1,则更新为y,enemy[y]若为-1则更新为x。

(3)检查x与y的根是否相同,若相同,则说明不能分为两组,程序结束。

(4)若不相同,则x与enemy[y]合并,y与enemy[x]合并。这就是所谓的“敌人的敌人就是朋友”。

程序:

#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <algorithm>
#include <iterator>
using namespace std;void init(int *p, int n)
{for(int i=0; i<n; i++)p[i] = -1;
}int Find(int x,

并查集变形 - 敌人相关推荐

  1. ACM_变形课(并查集)

    变形课 Time Limit: 2000/1000ms (Java/Others) Problem Description: 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermio ...

  2. hdu1181变形课dfs/bfs/并查集三种解法(java)

    题目链接 Problem Description 呃-变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个 ...

  3. hdu dfs入门java_hdu1181变形课dfs/bfs/并查集三种解法(java)

    题目链接 Problem Description 呃-变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个 ...

  4. HDU1181:变形课(并查集 + DFS + BFS)

    变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submissi ...

  5. 并查集应用:敌人和朋友

    package Algorithms_算法.作业.Friend_Enemy_并查集;public class UnionSet {private int []unions,enemy,rank;int ...

  6. 【NOJ1593、1594、1595】【并查集三连】朋友敌人关系

    1593.并查集(一) 时限:1000ms 内存限制:10000K  总时限:3000ms 描述 一个城市中有n个人,其中一些人是朋友关系,同时他们都认为:朋友的朋友是朋友,现在任给两个人,问他们是否 ...

  7. BZOJ 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居:队列 + multiset + 并查集【曼哈顿距离变形】...

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1604 题意: 平面直角坐标系中,有n个点(n <= 100000,坐标范围10^9) ...

  8. 暑期集训5:并查集 线段树 练习题F:  HDU - 1166 ​​​​​​​

    2018学校暑期集训第五天--并查集 线段树 练习题F  --   HDU - 1166 敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A ...

  9. [NC16591]关押罪犯 并查集

    题解:很明显的并查集,但因为它们带有权值,所以我们先要把他排序,我们要尽可能让危害大的罪犯在两个监狱里(这里有一点贪心的味道). 1.首先我们把它门按照之间的影响值从大到小排序. 2.假设a与b是敌人 ...

最新文章

  1. 使用结构、数组、循环和DataGridView写的分数统计小程序
  2. python教程第四版pdf下载-Python参考手册 第4版高清中文PDF下载
  3. 错误:因为相同类型的其他实体已具有相同的主键值。在使用 Attach 方法或者将实体的状态设置为 Unchanged 或 Modified 解决方法...
  4. 【Python】一些函数
  5. python矩阵所有元素取整_Python中如何对一个数值进行取整操作呢?
  6. 怎么用python将日期转化为数字_python实现将中文日期转换为数字日期
  7. 一文说透WordPress的自定义文章类型
  8. 快速排序---计数排序
  9. 前后端分离之JWT(JSON Web Token)的使用
  10. python子类调用父类构造函数_Java 子类调用父类的构造函数
  11. oracle存储过程菜鸟教程,SQL 简介
  12. 如何解决手机retina显示屏下的1px太粗问题
  13. 范莎学院计算机专业,范莎学院会不会不容易毕业?
  14. java开发五子棋程序
  15. 使用 html 写一个表达爱意的网页
  16. 都市青年图鉴:那些喊着奋斗的人,后来怎样了
  17. oracle缓存文件,oracle的缓存
  18. python脚本实现压力测试
  19. udp ue4 通讯_UE4 UDP通信
  20. PyQt5中的按钮2-QToolButton

热门文章

  1. 微信打造智能家居新生活
  2. 基于javaweb+mysql的酒店管理系统(java+springboot+mybatis+beetl+layui)
  3. IGBT反并联二极管的功能
  4. 在win10系统上使用IE11浏览器运行Applet,亲试有效!
  5. 云原生实战学习视频笔记1【尚硅谷】
  6. Python3.7安装Scrapy教程
  7. win10开机报错0xc0000098,bcd文件损坏无法正常启动,不需要下载win镜像即可修复的方法
  8. 项目 http 升级到 https 全程总结
  9. c++求区间第k大数_寻找第K大的数的方法总结
  10. 校园导游咨询系统(Dijkstra算法,图形化界面)