九度OJ 朋友圈 -- 并查集

【数据结构】朋友圈问题的解决——并查集 本篇博文旨在介绍一种数据结构——并查集;本文介绍了该数据结构的使用场景,并用代码进行了实现该数据结构 朋友圈问题: 1、已知,有n个人和m对好友关系(存于一个集合r中) 2、如果两个人是直接的或者间接的好友(好友的好友的好友。。。),那么他们属于一个集合,就是一个朋友圈里的 3、写出程序,求这n个人中一共有多少个朋友圈 文字描述还不明白的童鞋,可以看下面这个例子 例 阅读详情

题目地址:http://ac.jobdu.com/problem.php?pid=1526

题目描述:

假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。
假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,结果为2个朋友圈。

输入:

输入包含多个测试用例,每个测试用例的第一行包含两个正整数 n、m,1=<n,m<=100000。接下来有m行,每行分别输入两个人的编号f,t(1=<f,t<=n),表示f和t是好友。 当n为0时,输入结束,该用例不被处理。

输出:

对应每个测试用例,输出在这n个人里一共有多少个朋友圈。

样例输入:
5 3
1 2
2 3
4 5
3 3
1 2
1 3
2 3
0
样例输出:
2
1
来源:
小米2013年校园招聘笔试题
#include <stdio.h>
 
#define MAX 100001
 
void Make_Set (int father[], int rank[], int n){
    int i;
    for (i=1; i<=n; ++i){
        father[i] = i;
        rank[i] = 0;
    }
}
 
int Find_Set (int father[], int x){
    if (father[x] != x){
        father[x] = Find_Set (father, father[x]);
    }
    return father[x];
}
 
void Union (int father[], int rank[], int x, int y){
    x = Find_Set (father, x);
    y = Find_Set (father, y);
    if (x == y)
        return;
    if (rank[x] > rank[y]){
        father[y] = x;
        rank[x] += rank[y];
    }
    else{
        if (rank[x] == rank[y])
            ++rank[y];
        father[x] = y;
    }
}
 
int main(void){
    int n;
    int m;
    int father[MAX];
    int rank[MAX];
    int f, t;
    int nSet;
    int i;
 
    while (scanf ("%d", &n) != EOF && n != 0){
        scanf ("%d", &m);
        Make_Set (father, rank, n);
        while (m-- != 0){
            scanf ("%d%d", &f, &t);
            Union (father, rank, f, t);
        }
        nSet = 0;
        for (i=1; i<=n; ++i){
            if (father[i] == i)
                ++nSet;
        }
        printf ("%d\n", nSet);
    }
 
    return 0;
}

参考资料: 并查集 -- 学习详解

泛微Ecology流程数据表结构解析:workflow_requestbase和workflow_currentoperator到底怎么关联查询? 本文深入解析泛微Ecology系统中workflow_requestbase和workflow_currentoperator表的结构与关联机制,提供SQL查询语句示例,帮助开发者高效查询流程数据。涵盖待办事项、已办事项、办结事项和流程监控等典型场景,并分享性能优化技巧和常见问题排查指南。 阅读详情

相关推荐

字节开源 DeerFlow 2.0:从 Deep Research 到 Super Agent Harness 的进化之路

GitHub Trending 冠军项目,字节跳动完全开源的超级智能体框架。支持子代理、沙箱执行、长期记忆、技能扩展,可完成从几分钟到几小时的复杂任务。本文深度解析架构设计、安装实战、技能系统,并附上独家配置指南。

qq_38610923的博客 1712

小米2013年校园招聘笔试题——朋友圈

题目描述: 假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另...

weixin_30352645的博客 480

FreeRTOS的学习(十四)——PendSV异常

本文将从任务切换的角度出发,学习PendSV异常的相关概念。

LEOD的博客 1730

OJ214--朋友圈

java实现oj214题朋友圈 先看题目: 本题的基本思路就是利用并查集来解,难度不大。 先来看一下并查集的实现: 并查集的实现方式有很多种,这里采用的是路径压缩方法,这种方法的目的是为了避免树形结构退化成链表结构,会大大影响效率。 代码如下: public class UnionSet { private int[] fa; private int[] size; private int n; public UnionSet(int n) { this.

qq_39505991的博客 220

无人驾驶感知融合——横摆角速度的多源估计算法解析

本文深入解析了无人驾驶感知融合中的横摆角速度多源估计算法,详细介绍了轮速差法、侧向加速度法、曲率法和惯性传感器直读法四种计算方法及其优缺点。通过卡尔曼滤波实战案例,展示了多源融合算法在提升精度和稳定性方面的显著优势,并探讨了工程实践中的时间对齐、坐标系统一等关键问题。

weixin_31458015的博客 462

HFSS - 侧馈矩形微带天线设计与仿真

一、设计指标 中心频率:2.45GHz 介质板厚度:1.6mm 介质板相对介电常数:4.4 二、理论计算 辐射贴片宽度w=c2f(εr+12)−12w=\frac{c}{2 f}\left(\frac{\varepsilon_{r}+1}{2}\right)^{-\frac{1}{2}}w=2fc​(2εr​+1​)−21​ 辐射贴片长度L=cfεe−2ΔLL=\frac{c}{f \sqrt{\varepsilon_{\mathrm{e}}}}-2 \Delta LL=fεe​​c​−2ΔL

MaxWei 1万+

【LeetCode547. 朋友圈】 并查集 DFS 详解

题目如下: 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总...

待到山花烂漫时 610

GStreamer 源代码入门

GStreamer 是一个高度模块化的多媒体框架,其源代码结构清晰,设计精良。

深之JohnChen的专栏 953

朋友圈(java)LeetCode原题

一、题目描述 班上有N名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B的朋友,B 是 C的朋友,那么我们可以认为 A 也是 C的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个N * N的矩阵M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋...

alan_gaohaodong的博客 1802

【测开求职】面试题:操作系统 吐血整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。涵盖考研范围内的所有知识内容,读者可以先查看上面的链接走一遍操作系统的整体框架结构。其中,重点难点以及易混淆的知识点,笔者用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。另外操作系统在校招中有非常明显的重点,一般情况下只会考察进程管理,内存管理,和设备管理,且这三者考察频率依次递减,文件管理基本不会考察。

vector的博客 7908

9篇6章7节:SEER 数据库的2025年数据变量多条件组合选择(2026年版)

软件中的病例筛选功能通过CaseSelection界面实现精准研究队列构建。该界面允许用户通过变量选择(Variable)、运算符定义(Operator)和取值设定(Values)三步操作创建筛选条件,支持种族、分期等关键变量的多条件组合。

MD Code 1455

九度OJ 题目1526:朋友圈(并查集)

题目描述: 假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个

819

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 966

九度OJ题目 1526 朋友圈 并查集

题目描述: 假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友

dama677409的专栏 1485

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

九度OJ 朋友圈 并查集

题目描述: 假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋

xyjikl 675

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

九度oj 1526 朋友圈 并查集

父亲节点怕par[i]是i,说明他是根,总共有多少个

u013497977的专栏 913

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【九度OJ】:1526 并查集 朋友圈问题

假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友…),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,结果为2个朋友圈。

阳光心态,健康人生的博客 525

【九度OJ】题目1444:More is better 解题报告

【九度OJ】题目1444:More is better 解题报告标签(空格分隔): 九度OJ原题地址:http://ac.jobdu.com/problem.php?pid=1444题目描述:Mr Wang wants some boys to help him with a project. Because the project is rather complex, the more boys

负雪明烛 1099

九度OJ 1156:谁是你的潜在朋友 (并查集)

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5802 解决:2593 题目描述:     “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。

梁山伯的专栏 619

<九度 OJ>题目1526:朋友圈

题目描述: 假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 Total Accepted: 72806 Total Submissions: 209143 Difficulty: Medium 一个机器人定位在m行n列的网格中的最左上角,定义它为“开始”位置,这个机器人可以移动,每次要么往下移动一步,要么往右移动一步,为了能达到终点, 有

EbowTang的练习场 1477

九度 题目1444:More is better

九度 题目1444:More is better

coding_sun的博客 280

九度OJ 题目1526:朋友圈(小米2013年校园招聘笔试题)

#include #include #include #include using namespace std; const int maxn = 100005; int father[maxn]; int rank[maxn]; int flag[maxn]; int n,m; void make_set(int n){ for(int i = 1;i <= n;i++){

Roly 770

2013年7月九度Online Judge程序猿求职及面试月赛 题解

题目1525:子串逆序打印 题目描述: 小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串的每个子串都打印反了,现在麻烦你帮小明将这些字符串中的子串修正过来,同时为了使卡片美观,压缩其中的连续空格为1个。 输入: 输入包含多个测试用例,每个测试用例的第一行是一个正整数 n,1= 输出: 对应每个测试用例,请按照要求输出

c的专栏 977

九度oj 1444

题目描述: Mr Wang wants some boys to help him with a project. Because the project is rather complex, the more boys come, the better it will be. Of course there are certain requirements.Mr Wang selected

lifestylegoingon的专栏 300

朋友圈问题

今天分享的是朋友圈问题的C++解法,用到了DFS,是高级数据结构里的知识,欢迎指正

weixin_62456756的博客 533
上一篇: 并查集 -- 学习详解
下一篇: 最长不重复子串
JDPlus
博客等级 码龄15年 221粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值