动规(20)-并查集基础题——打击犯罪(代码片段)

H_Cisco H_Cisco     2022-11-24     593

关键词:

【问题描述】

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

【输入格式】black.in

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

【输出格式】black.out

一个正整数,为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 <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n, maxt, i, j, r1, r2, q, f, t;
int head[1001], s[1001], father[1001];
struct node

    int data, nex;
 p[100000];
int find(int x)

    return father[x] == x ? x : father[x] = find(father[x]);

void lian(int x, int y)

    p[++q].nex = head[x];
    p[q].data = y;
    head[x] = q;

int main()

    cin >> n;
    maxt = n / 2;
    for (i = 1; i <= n; i++)
    
        cin >> t;
        for (j = 1; j <= t; j++)
        
            cin >> f, lian(i, f);
        
    
    for (i = 1; i <= n; i++)
    
        father[i] = i;
        s[i] = 1;
    
    for (i = n; i >= 1; i--)
        for (j = head[i]; j; j = p[j].nex)
            if (p[j].data > i)
            
                r1 = find(i);
                r2 = find(p[j].data);
                if (r1 != r2) //必须判断,否则"加重 ”
                
                    father[r2] = r1;
                    s[r1] = s[r1] + s[r2];
                
                if (s[r1] > maxt)
                
                    cout << i;
                    return 0;
                
            
    return 0;

动规(20)-并查集基础题——打击犯罪(代码片段)

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

动规(22)-并查集基础题——cd收藏cd.cpp(并查集)(代码片段)

Description   约翰平常爱听歌,所以买了很多的CD来收藏,但是因为平常整理不当,所以忘记了这些CD的歌手是谁。现在他想知道他到底收藏了多少位歌手的专辑,于是他想了一个办法,同时拿出两个CD来听࿰... 查看详情

动规(22)-并查集基础题——cd收藏cd.cpp(并查集)(代码片段)

Description   约翰平常爱听歌,所以买了很多的CD来收藏,但是因为平常整理不当,所以忘记了这些CD的歌手是谁。现在他想知道他到底收藏了多少位歌手的专辑,于是他想了一个办法,同时拿出两个CD来听࿰... 查看详情

动规(22)-并查集基础题——cd收藏cd.cpp(并查集)(代码片段)

Description   约翰平常爱听歌,所以买了很多的CD来收藏,但是因为平常整理不当,所以忘记了这些CD的歌手是谁。现在他想知道他到底收藏了多少位歌手的专辑,于是他想了一个办法,同时拿出两个CD来听࿰... 查看详情

动规(16)-并查集基础题——格子游戏(代码片段)

【问题描述】Alice和Bob玩了一个古老的游戏:首先画一个n*n的点阵(下图n=3)  接着,他们两个轮流在相邻的点之间画上红边和蓝边:直到围成一个封闭的圈(面积不必为1)为止,“封圈”的... 查看详情

动规(16)-并查集基础题——格子游戏(代码片段)

【问题描述】Alice和Bob玩了一个古老的游戏:首先画一个n*n的点阵(下图n=3)  接着,他们两个轮流在相邻的点之间画上红边和蓝边:直到围成一个封闭的圈(面积不必为1)为止,“封圈”的... 查看详情

动规(16)-并查集基础题——格子游戏(代码片段)

【问题描述】Alice和Bob玩了一个古老的游戏:首先画一个n*n的点阵(下图n=3)  接着,他们两个轮流在相邻的点之间画上红边和蓝边:直到围成一个封闭的圈(面积不必为1)为止,“封圈”的... 查看详情

动规(19)-并查集基础题——城镇道路(代码片段)

Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间... 查看详情

动规(19)-并查集基础题——城镇道路(代码片段)

Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间... 查看详情

动规(19)-并查集基础题——城镇道路(代码片段)

Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间... 查看详情

动规(23)-并查集基础题——家谱(代码片段)

【问题描述】  现代的人对于本家族血统越来越感兴趣,现在给出充足的父子关系,请你编写程序找到某个人的最早的祖先。【输入格式】gen.in  输入文件由多行组成,首先是一系列有关父子关系的描述,其中... 查看详情

动规(23)-并查集基础题——家谱(代码片段)

【问题描述】  现代的人对于本家族血统越来越感兴趣,现在给出充足的父子关系,请你编写程序找到某个人的最早的祖先。【输入格式】gen.in  输入文件由多行组成,首先是一系列有关父子关系的描述,其中... 查看详情

动规(24)-并查集基础题——关押罪犯(代码片段)

【问题描述】S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值ÿ... 查看详情

动规(24)-并查集基础题——关押罪犯(代码片段)

【问题描述】S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值ÿ... 查看详情

动规(24)-并查集基础题——关押罪犯(代码片段)

【问题描述】S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值ÿ... 查看详情

动规(21)-并查集基础题——搭配购买(代码片段)

Description Joe觉得云朵很美,决定去山上的商店买一些云朵。商店里有n朵云,云朵被编号为1,2,...,n,并且每朵云都有一个价值。但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配... 查看详情

动规(21)-并查集基础题——搭配购买(代码片段)

Description Joe觉得云朵很美,决定去山上的商店买一些云朵。商店里有n朵云,云朵被编号为1,2,...,n,并且每朵云都有一个价值。但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配... 查看详情

动规(21)-并查集基础题——搭配购买(代码片段)

Description Joe觉得云朵很美,决定去山上的商店买一些云朵。商店里有n朵云,云朵被编号为1,2,...,n,并且每朵云都有一个价值。但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配... 查看详情