打击犯罪

ssl 2342

题目大意:

有n个人某些人之间有连接(连接成一个团伙),现在要最大的团伙人数不大于n/2,要最少要删掉几个人(要按顺序删)

原题:

题目描述:

某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就形成了一个庞大的犯罪集团,犯罪集团的危险程度唯一由集团内的犯罪团伙数量确定,而与单个犯罪团伙的危险程度无关(该犯罪集团的危险程度为n)。现在当地警方希望花尽量少的时间(即打击掉尽量少的团伙),使得庞大的犯罪集团分离成若干个较小的集团,并且他们中最大的一个的危险程度不超过n/2。为达到最好的效果,他们将按顺序打击掉编号1到k的犯罪团伙,请编程求出k的最小值。

输入

第一行一个正整数n
接下来的n行每行有若干个正整数,第一个整数表示该行除第一个外还有多少个整数,若第i行存在正整数k,表示i,k两个团伙可以直接联系

输出

一个正整数,为k的最小值

输入样例

7
2 2 5
3 1 3 4
2 2 4
2 2 3
3 1 6 7
2 5 7
2 5 6

输出样例

1

解题思路:

因为是按顺序打击的,所以倒着循环,每次添加一个人,如果没超过那继续,如果超过了就直接输出

代码:

#include<cstdio>
using namespace std;
int n,x,y,pp,p[1005],dad[1005],s[1005],b[1005][1005];
int find(int dep){return dad[dep]==dep?dep:dad[dep]=find(dad[dep]);} //并查集
int main()
{scanf("%d",&n);for (int i=1;i<=n;++i){scanf("%d",&b[i][0]);for (int j=1;j<=b[i][0];++j)scanf("%d",&b[i][j]);s[i]=1;//预处理dad[i]=i;}for (int i=n;i>0;--i){p[i]=1;for (int j=1;j<=b[i][0];++j)//合并其他的if (find(i)!=find(b[i][j])&&p[b[i][j]]){x=find(i);y=find(b[i][j]);if (x>y){dad[y]=x;s[x]+=s[y]; //累加}else{dad[x]=y;s[y]+=s[x];}}for (int j=i;j<=n;++j)if (s[j]>n/2)//判断符不符合{printf("%d",i);pp=1;break;}if (pp) break;}
}

【并查集】打击犯罪(ssl 2342)相关推荐

  1. 1386:打击犯罪(并查集)

    [题目描述] 某个地区有n(n≤1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就形成了 ...

  2. BZOJ 2342 [Shoi2011]双倍回文(manacher+并查集)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2342 [题目大意] 记Wr为W串的倒置,求最长的形如WWrWWr的串的长度. [题解] ...

  3. 【并查集】银河英雄传说 (luogu 1196/ssl 1225)

    银河英雄传说 luogu 1196 ssl 1225 题目大意: 有n列船,每列一开始有一艘船,可以将某一艘船所在的列所有船接到另外一列,然后会问某两艘船是否在一列,如果在那中间有多少艘船 原题: 题 ...

  4. 【并查集】家谱(luogu 2814/ssl 2343)

    家谱 luogu 2814 ssl 2343 题目大意: 给一堆父子关系,求出一些人的最大的祖先 原题: 题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到 ...

  5. 【图论】【并查集】矩形(ssl 1222)

    矩形 ssl 1222 题目大意: 有n个矩阵,现在将有重叠部分的两个矩阵合并成一个图形,问有多少个图形 原题: 题目描述 在一个平面上有n个矩形.每个矩形的边都平行于坐标轴并且都具有值为整数的顶点. ...

  6. 【并查集】【图论】【最小生成树】剑鱼行动(ssl 1618)

    剑鱼行动 ssl 1618 题目大意: 求一个平面直角坐标系中的最小生成树 原题: 题目描述 给出N个点的坐标,对它们建立一个最小生成树,代价就是连接它们的路径的长度,现要求总长度最小.N的值在100 ...

  7. 【并查集】家族 (ssl 1896)

    家族 ssl 1896 题目大意: 合并一些集合,然后判断某两个点是否在同一个集合内 原题: 题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出 ...

  8. [最短路-Floyd][并查集]SSL P2344 刻录光盘

    Description 在PJOI2010夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学习.组委会觉得这个主意不错!可是组委会一时没有足够的空光 ...

  9. 树形结构 —— 并查集

    [概述] 并查集(Union-Find Set)是一种用于分离集合操作的抽象数据类型,其处理的是集合(set)之间的关系,一般处理的是图的连通分量,当给出两个的元素的一个无序对 (a,b) 时,需要快 ...

最新文章

  1. 电击、警棍、爆头,被骗去柬埔寨的程序员有多惨?
  2. HBase眼高手低从Shell到IDEA编程、心路笔记、踩坑过程
  3. python使用符号 表示单行注释-Python编程规范之注释
  4. Linux / pthread_create() 函数所使用的线程函数为什么必须是静态函数?
  5. 前端项目 开发者环境 和 正式环境 区别
  6. _declspec(naked) 使用
  7. 向maven中添加Oracle数据库的驱动,有效!
  8. Mac网易云音乐ncm格式转mp3
  9. 微信僵尸粉删除工具 WeTool v4.0.7.0 免费版
  10. TensorFlow Serving架构分析
  11. Excel PivotTable 使用心得手顺分享(一)
  12. 贾扬清担任阿里开源技术委员会负责人,开源升级为阿里技术战略之一
  13. Qt的各版本直接下载地址
  14. vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换
  15. 【微机原理与接口技术】
  16. Java 实现分页功能
  17. Oracle的定时任务
  18. 关于显著性检验,有你想要的!
  19. 关于获取当前时间出现1970年问题的解决
  20. 小白前端自制红警登陆界面(试水前端)

热门文章

  1. linux获取tomcat进程,Shell 获取Tomcat进程号
  2. python实用脚本 知乎_停课不停学|38 个免费 Python 项目合集,从小白到老司机!...
  3. silklabo哪个公众号有资源_微小说免费渣渣团资源公众号看大全集
  4. css伪类元素加在元素前,CSS伪类:before在元素之前 :after 在元素之后实例讲解
  5. json.net java_java解析JSON (使用net.sf.json)
  6. java当中递归打印目录树
  7. linux启动mqtt_linux下安装MQTT服务器 - EMQTT
  8. 自适应滤波器在matlab仿真的程序_电气信息类专业课程之matlab系统仿真 第五章 BPSK通信系统(3)...
  9. 7-10 逆波兰表达式求值 (20 分)(c语言)(数据结构)
  10. xorg.conf变更导致开机无法显示