首页 > 编程语言 >算法题-朋友圈-并查集

算法题-朋友圈-并查集

时间:2023-04-06 22:03:33浏览次数:34  
标签:cnt int res 圈子 查集 算法 朋友圈 编号 include

朋友圈

现在有 105 个用户,编号为 1- 105,现在已知有 m 对关系,每一对关系给你两个数 x 和 y ,代表编号为 x 的用户和编号为 y 的用户是在一个圈子中,例如: A 和 B 在一个圈子中, B 和 C 在一个圈子中,那么 A , B , C 就在一个圈子中。现在想知道最多的一个圈子内有多少个用户。

数据范围: 1≤≤2×10^6 1≤m≤2×10^6

输入:

第一行输入一个整数T,接下来有T组测试数据。
对于每一组测试数据:第一行输入1个整数n,代表有n对关系。

接下来n行,每一行输入两个数x和y,代表编号为x和编号为y的用户在同一个圈子里。

输出:

对于每组数据,输出一个答案代表一个圈子内的最多人数

思路,判断是不是在一个圈子里,就是判断是不是在一个集合里,用并查集真好。我们还要更新自己圈子里元素的个数。

#include <iostream>
#include <stdlib.h>
#include <cstring>
#include <map>

using namespace std;

int p[100010];          // 指出他的根
int cnt[100010];      // 用来统计个数

// find函数
int f(int x) {
    if (p[x] != x) {
        p[x] = f(p[x]);   // 路径压缩
    } else {
        return p[x];
    }
    return p[x];
}

int main() {
    int t;
    cin >> t;
    while (t) {
        for (int i = 0; i < 100010; i++) {
            p[i] = i;
            cnt[i] = 1;
        }
        int n;
        cin >> n;
        int res = 0;
        while (n--) {
            int a, b;
            cin >> a >> b;
            int x = f(a);
            int y = f(b);
            if(x != y) {
                p[x] = y;
                cnt[y] += cnt[x];
                res = max(cnt[y], res);
            }
        }
        printf("%d\n", res);
        t--;
    }
}

标签:cnt,int,res,圈子,查集,算法,朋友圈,编号,include
From: https://www.cnblogs.com/yumingkuan/p/17294359.html

相关文章

  • 并查集
    CF371DVessels点击查看题目点击查看思路定义一个权值并查集,权值保存这个集合还可以存下多少水。如果这个集合可以存放的水已经小于要装入的水,就将这个集合与下一个集合合并。否则,直接把这个集合可以存放的水减去要装入的水的体积。点击查看代码#include<bits/stdc+......
  • 什么是贪心算法
    贪心算法基本思想:顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优......
  • 蚁群算法 Dijkstra算法 遗传算法 人工势场法实现二维 三维空间路径规划
    【改进蚁群算法】蚁群算法Dijkstra算法遗传算法人工势场法实现二维三维空间路径规划本程序为改进蚁群算法+Dijkstra算法+MAKLINK图理论实现的二维空间路径规划算法实现:1)基于MAKLINK图理论生成地图,并对可行点进行划分;2)用Dijkstra算法实现次优路径的寻找;3)在Dijkstra算法......
  • 欧几里得算法
    欧几里得算法(Euclid)最大公约数\(gcd(a,b)\)intgcd(inta,intb){while(b){swap(a,b);b%=a;}returna;}//---or---intgcd(inta,intb){return(b==0?a:gcd(b,a%b));}最小公倍数\(lcm(a,b)\)intlcm(inta,intb){......
  • 异步电机无传感器矢量控制的算法,matlab,仿真模型,采用转子磁链定向控制算法
    异步电机无传感器矢量控制的算法,matlab,仿真模型,采用转子磁链定向控制算法,转子磁链观测器采用电压模型+电流模型补偿算法。YID:8688667414516678......
  • 灰狼优化算法GWO优化SVM支持向量机惩罚参数c和核函数参数g
    灰狼优化算法GWO优化SVM支持向量机惩罚参数c和核函数参数g,有例子,易上手,简单粗暴,替换数据即可,分类问题。仅适应于windows系统YID:6999630206572076......
  • 粒子群算法PSO优化LSSVM最小二乘支持向量机惩罚参数c和核函数参数g
    粒子群算法PSO优化LSSVM最小二乘支持向量机惩罚参数c和核函数参数g,用于回归预测,有例子,易上手,简单粗暴,直接替换数据即可。仅适应于windows系统。质量保证,完美运行。        本人在读博士研究生,已发表多篇sci,非网络上的学习代码,不存在可比性。ID:6999630547781158......
  • 巷道堆垛式立体车库调度算法研究
    在国家质检总局发布的《特种设备目录》中,立体车库分为九大类,分别是:升降横移简易升降垂直循环水平循环多层循环平面移动巷道堆垛垂直升降汽车专用升降影响立体车库运营服务效率主要是控制系统软件部分的存取车调度策略算法,而用户排队时间与车库服务效率息息相关 巷......
  • m基于简化后的轻量级yolov4深度学习网络农作物检测算法matlab仿真
    1.算法描述        YOLOv4的深层网络包括SPP模块、PANet模块、YOLOHead模块和部分卷积,其主要作用是加强目标特征提取并获取预测结果。SPP模块的输入端和输出端各连接一个三次卷积块,每个三次卷积块包含2个1×1卷积和1个3×3卷积。PANet模块包含特征层堆......
  • 王道C语言笔记NOTE-中级阶段Note8-排序算法真题实战
    一、2016年43题1、问题描述2、答案解析(1)、算法的基本设计思想由题意知,将最小的n/2个元素放进A1中,剩余元素放在A2中,分组结果即可满足题目要求。仿照快速排序的思想,基于枢轴把n个整数划分成两个子集,根据划分后枢轴所处的位置i分别处理:①、若i=n/2,则分组完成,算法结束;②、若i<......