5971 打击犯罪

时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold

题目描述 Description

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

输入描述 Input Description

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

输出描述 Output Description

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

样例输入 Sample Input

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

样例输出 Sample Output

1

数据范围及提示 Data Size & Hint

n<=1000

输出1(打击掉红色团伙)

暴力+并查集

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 int f[1005],a[1005][1005],num[1005],b[1005];
 6 int find(int x)
 7 {
 8     if (f[x]==x) return f[x];
 9     f[x]=find(f[x]);
10     return f[x];
11 }
12
13 /*int find(int x)
14 {
15     if(f[x]==x)return f[x]=find(f[x]);
16     return f[x];
17 }*/
18 int main()
19 {
20     int n,i,j,z,k,saber;
21     bool pd;
22     scanf("%d",&n);
23     for(i=1;i<=n;++i)
24     {
25         scanf("%d",&k);
26         for (j=1;j<=k;++j)
27         {
28             scanf("%d",&z);
29             if(z>i)
30              a[i][++num[i]]=z;//只存大的
31         }
32     }
33     for(k=1;k<=n/2;++k)//危险程度不超过n/2
34     {
35         memset(b,0,sizeof(b));
36         for(i=1;i<=n;++i)
37         {
38             f[i]=i;
39         }
40         for(i=k+1;i<=n;++i)
41         for(j=1;j<=num[i];++j)//枚举能到达的点(邻接表)
42         {
43             f[find(i)]=find(a[i][j]);
44         }
45         for(i=1;i<=n;++i)
46         {
47             saber=find(i);
48         }
49         for(i=1;i<=n;++i)
50         {
51             b[f[i]]++;
52         }
53         pd=true;
54         for(i=1;i<=n;++i)
55         {
56             if(b[i]>n/2)
57             {
58                 pd=false;
59                 break;
60             }
61         }
62         if(pd==true)
63         {
64             printf("%d",k);
65             return 0;
66         }
67     }
68     return 0;
69 }

转载于:https://www.cnblogs.com/sssy/p/6701456.html

codevs 5971 打击犯罪相关推荐

  1. 【并查集】打击犯罪(ssl 2342)

    打击犯罪 ssl 2342 题目大意: 有n个人某些人之间有连接(连接成一个团伙),现在要最大的团伙人数不大于n/2,要最少要删掉几个人(要按顺序删) 原题: 题目描述: 某个地区有n(n<=1 ...

  2. 信息学奥赛一本通 1386:打击犯罪(black)

    [题目链接] ybt 1386:打击犯罪(black) [题目考点] 1. 并查集 [解题思路] 这是个无向图.每个犯罪团伙是一个顶点,犯罪团伙之间的联系是边,每个犯罪集团是一个连通分量. 以下描述中 ...

  3. codeup26206 打击犯罪

    codeup26206 打击犯罪 时空限制    1000ms/128MB 题目描述 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙 ...

  4. 【SSL_P2342】打击犯罪

    打击犯罪 Description 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接 ...

  5. 第三部分 数据结构 -- 第四章 图论算法1386:打击犯罪(black)

    1386:打击犯罪(black) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 2477 通过数: 1355 [题目描述] 某个地区有n(n≤1000)个犯罪团伙,当地警方按照他 ...

  6. 打击犯罪 解题报告

    打击犯罪  解题报告 v[问题描述] v 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直 ...

  7. 【SSL2342】打击犯罪

    Description 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系 ...

  8. 打击犯罪(信息学奥赛一本通-T1386)

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

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

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

最新文章

  1. LINUX检测服务并自动运行,一种Linux下的开机自动检测硬件信息的方法与流程
  2. 通信工程施工设计纲领文件
  3. linux安装mysql 5.6.33
  4. hive 动态分区实现 (hive-1.1.0)
  5. sql string转number_少用 string.Format
  6. CAT - 监控平台之装配篇
  7. 学习java_java学习册之立FLAG
  8. POJ2002 Squares
  9. PHP SQL注入攻击与防御
  10. mysql 批量插入 性能_MySQL批量插入数据性能比较
  11. 车辆信息查询api,通过车系名称查询相关信息
  12. Hack the box -- 靶机渗透测试(TIER2)
  13. 如何在EXCEL表格中加斜线表头
  14. SQL分组排序和排序函数(rank、dense_rank、row_number)
  15. Pandas的crosstab函数
  16. ASP.NET Core 中文文档 第四章 MVC(3.7 )局部视图(partial)
  17. can总线隔离中继器、canbridge、CanRepeater的can波特率和滤波设置
  18. java文件输出流,写到.txt文件,如何实现换行
  19. 小明的字符串--牛客
  20. 西安电子科技大学2019年通信考研心得

热门文章

  1. 计算机学院大学生程序设计竞赛(2015’11)
  2. 2023年,哪些行业,值得加入?
  3. Adobe Premiere基础-工具使用(选择工具,剃刀工具,等常用工具)(三)
  4. 2022年Android Studio详细下载,安装使用教程
  5. SQL Server 数据库之SQL Server 数据库的安全设置
  6. Calcu 计算器简单去广告教程+修改应用名称
  7. python项目之弹球小游戏 3
  8. 移动硬盘在电脑中怎么打开很慢
  9. linux学习笔记:dstat命令详解
  10. 十年程序员血与泪:千万别重构代码!