并查集模板题(stl 中map的运用)

并查集(算法+模板+讲解) 立即下载

DongDong认亲戚
DongDong每年过春节都要回到老家探亲,然而DongDong记性并不好,没法想起谁是谁的亲戚(定义:若A和B是亲戚,B和C是亲戚,那么A和C也是亲戚),她只好求助于会编程的你了。
输入描述:
第一行给定n,m表示有n个人,m次操作

第二行给出n个字符串,表示n个人的名字分别是什么(如果出现多个人名字相同,则视为同一个人)(保证姓名是小写字符串)

接下来m行,每行输入一个数opt,两个字符串x,y

当opt=1时,表示x,y是亲戚

当opt=2时,表示询问x,y是否是亲戚,若是输出1,不是输出0

数据范围:1<=n,m<=20000,名字字符长度小等于10
输出描述:
对于每个2操作给予回答
示例1
输入

4 4
chen lin yi cheng
2 chen lin
1 chen lin
1 yi lin
2 yi lin
输出

0
1
ps:一看就是并查集模板题,但不同的是,一般的并查集题都是具体的数字进行并查操作,而这道题是用字符串进行操作,很容易想到把每个字符串当成某个确定的数字,再进行操作,然后果断一个TLE教做人,后来我又想到用set来存,发现还是同样的问题没解决,最后才知道可以用map来存名字,map就是一种映射关系,就可以把字符串模拟成数组(很像JavaScript里面的自定义数组)那种,进行并与查的操作,具体看代码。

我的垃圾 代码

#include<bits/stdc++.h>
using namespace std;
unordered_map<string, string> root; //存放每个人,以及对应的祖先,其跟map的区别是可以存相同的键,用法都大致相同
string GetRoot(string node){  //找祖先
    if (node == root[node])
        return node;
    return root[node] = GetRoot(root[node]);
}
void Union(string person1, string person2){//将两人合并为亲戚
    string p1 = GetRoot(person1);
    string p2 = GetRoot(person2);
    root[p2] = p1;
}
bool SameRoot(string person1, string person2){//查找是否是亲戚
    string p1 = GetRoot(person1);
    string p2 = GetRoot(person2);
    return p1 == p2;
}
int main(){
    int n,op,m;
    string person1, person2;
    cin >> n>>m;
    for(int i=0;i<n;i++){
        cin>>person1;
        root[person1]=person1;
    }
    while (m--){
       cin>>op>>person1>>person2;
        if (op ==1 ){
            Union(person1, person2);
        }
        else{
            if (SameRoot(person1, person2))
                printf("1\n");
            else
                printf("0\n");
        }
    }
    return 0;
}

神仙的代码,orz,这也太nb了,菜鸡已经看呆了

#include<bits/stdc++.h>
using namespace std;
unordered_map<string,string>M;
string t,tt;
int n,m,o,i;
string find(string x){
      return x==M[x]?x:M[x]=find(M[x]);
}
int main()
{
    cin>>n>>m;
    for(i=0;i<n;i++)
    cin>>t,M[t]=t;
    for(i=0;i<m;i++)
    cin>>o>>t>>tt,o==1?(M[find(tt)]=find(t),0):(puts(find(t)==find(tt)?"1":"0"));
}
数据可视化—power bi 基础操作汇总 数据来源: https://pan.baidu.com/s/1U_Y7rKfhnSKbLmh4FcUD_Q 提取码: yq5v 目录 基本功能与视图 编辑与查询—修改column案例 建立关联性 新增column与DAX完成总价运算 习题练习1:建立可视化图表 产品销售统计图 column拖曳可视化 1.基本功能与视图 ①基础操作界面 ②获取数据—以打开excel为例 ③数据文件基本视图 可视化形式:柱状图、数据、关联性 2.编辑与查询—修改column ①编辑与查询—数据处理界面 . 阅读详情

相关推荐

Python爬虫实战:5分钟搞定Web of Science文献批量导出与解析(附完整代码)

本文提供了一套利用Python爬虫技术,快速实现Web of Science文献批量提取与解析的完整方案。通过解析官方导出的HTML文件,结合BeautifulSoup和pandas库,可将文献数据自动转换为结构化的Excel/CSV表格,帮助科研人员高效管理文献信息,节省大量手动整理时间。

weixin_29050513的博客 1164

牛客赛47 DongDong认亲戚(并查集+map)

链接:https://ac.nowcoder.com/acm/contest/904/B 来源:牛客网 题目描述 DongDong每年过春节都要回到老家探亲,然而DongDong记性并不好,没法想起谁是谁的亲戚(定义:若A和B是亲戚,B和C是亲戚,那么A和C也是亲戚),她只好求助于会编程的你了。 输入描述: 第一行给定n,m表示有n个人,m次操作 第二行给出n个字符串,表示n个人的...

卑鄙的我 418

SpyGlass Lint脚本实战:如何用TCL自动化RTL代码检查(附完整配置模板)

本文详细介绍了如何利用TCL脚本实现SpyGlass Lint工具的自动化RTL代码检查。通过构建模块化、工程化的脚本框架,文章提供了从环境搭建、核心配置、规则定制到豁免管理的完整实战指南,并附有可复用的配置模板,旨在帮助IC设计工程师构建高效、一致的代码质量检查流水线。

weixin_29204205的博客 134

B.DongDong认亲戚

链接:https://ac.nowcoder.com/acm/contest/904/B 题意: DongDong每年过春节都要回到老家探亲,然而DongDong记性并不好,没法想起谁是谁的亲戚(定义:若A和B是亲戚,B和C是亲戚,那么A和C也是亲戚),她只好求助于会编程的你了。 思路: 并查集模板题。 map记录人。 代码: #include <bits/stdc++.h...

weixin_33913332的博客 201

硕士论文排版救星:用Mathtype一键搞定所有公式格式(附样式预设文件)

本文详细介绍了如何使用Mathtype的样式预设和批量格式化功能,快速统一硕士论文中的公式格式。通过创建标准样式预设文件和一键批量处理,解决公式字体、大小、间距不统一的问题,确保符合学术规范要求,大幅提升论文排版效率。

weixin_30772105的博客 936

9 海康视觉平台VisionMaster 上手系列:典型案例之螺丝机案例

海康视觉平台VisionMaster 上手系列:典型案例之螺丝机案例 快速入门 工业机器视觉 机器视觉

HuangGong2022的博客 7167

并查集模板超详细整理

并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: ·合并(Union):把两个不相交的集合合并为一个集合。 ·查询(Find):查询两个元素是否在同一个集合中。 假如有编号为1, 2, 3, …, n的n个元素,我们用一个数组fa[]来存储每个元素的父节点(因为每个元素有且只有一个父节点,所以这是可行的)。一开始,我们先将它们的父节点设为自己。 查询 int find(int x) { if(fa[x] == x)

林深不见鹿 的博客 6803

概念解析 | 雷达动态范围

这里存在一个动态范围的问题:强雷达发射信号和弱目标反射信号存在非常大的功率差异,比如传统的脉冲多普勒雷达动态范围可达90dB以上。随着上述技术的发展,预计未来十年雷达接收机动态范围将达到120dB以上,届时雷达的监视能力将得到极大增强。简单来说,雷达动态范围越大,表示接收机噪声越低,对强信号过载保护能力越强,就越能检测到弱信号目标。此外,部分新概念雷达对动态范围提出新的需求,如被动雷达动态范围需大于100dB。当前,随着阵列雷达和数字雷达技术的发展,对雷达接收机动态范围提出了更高要求。

NLOS的博客 1051

并查集模板

并查集 并查集是个数据结构,围绕着一个就是根节点展开,若两点的根节点相同那么就肯定在一棵树内,所以我们只需要维护一个点的父亲节点就好了,然后每次询问都查找根节点是否相同。 但若树退化成链的话,我们就需要判断两点和根节点的关系,保留当前点的根节点关系就好了,这样的优化方式我们叫做路径压缩。 1.普通并查集模板 初始化: void mem(int n) { for (int i=0;i<=n;i++) { father[i]=i; R[i]=1;//秩优

算法小猪的博客 3226

【AutoSAR】【BootLoader】AutoSAR Bootloader 原理与流程

目录 一、HIS规范 二、BOOTLOADER软件架构 三、烧写流程 一、HIS规范 国外整车厂意识到在线刷新ECU的重要性,由奥迪公司、宝马公司、戴姆勒公司、保时捷公司、大众公司成立一个委员会,名为HIS委员会,专门负责帮助汽车制造商掌握微处理器控制单元软件和质量保证领域的原理和方法; HIS Bootloader的主要功能是通过标准的通信接口对ECU进行再编程 。 HIS Bootloader的软件设计基于AUTOSAR体系架构、ISO14229、ISO15765-2、HI...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5247

[Unity开发] [PICO]避坑指南:PICO商店上传APP时PXR Platform APPID设定详解

PICO开发者上传Unity应用时常见的"APPID不符"问题,主要源于混淆了开发者后台两个不同位置的APPID。

每日出拳老爷子的博客 555

并查集(模板+例题)

将物品价值从大到小排序,先给他安排时间,安排好,将。

2301_81692739的博客 2367

【STM32项目】基于AI技术的多功能消防机器人(完整工程资料源码)

机器人通过巡逻扫描环境空间与障碍物、定位导航、探测物体/环境进行建模/自动地图测绘、扫描火焰、获取温湿度大小、获取空气安全情况来判断当前环境地点是否安全,检测到温度过高或检测到易燃、烟雾、有毒气体或摄像头识别到火焰时能够通过高压水泵喷射器来实现火焰隔离工作,蜂鸣器进行现场鸣笛报警,同时将当前环境温湿度大小、空气情况、环境地图、是否安全信息,将各个传感器来接收获取到的信息,实时发送到用户手机中的微信小程序,实现与用户远程监视功能,用户同时也能通过手机与电脑远程下发命令来操控机器人来实现交互功能

嵌入式技术开发 1万+

STL map详解:从入门到精通【详细解析+例题训练】

C++ STL map:实现的高效有序键值对容器,详解其特性、用法、应用场景及性能优化,助你掌握标准库最强关联式容器。 (浓缩核心要点,突出技术价值,保持专业性和吸引力)

2402_88147924的博客 2489

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

浅谈并查集

一些简单种类的并查集

qq_43052183的博客 1219

efm32 入门.pdf

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

【数据结构1-3】集合(重要数据结构:并查集)

文章目录前言[P1551 亲戚](https://www.luogu.com.cn/problem/P1551)(朴素并查集)[P1536 村村通](https://www.luogu.com.cn/problem/P1536)(朴素并查集)[P3370 【模板】字符串哈希](https://www.luogu.com.cn/problem/P3370)(字符串哈希,STL容器)[P3405 [U...

py今天刷题了吗 840

基础数据结构(二):字典树、并查集、堆、哈希表、字符串的哈希方式、STL的常见容器及其接口

基础数据结构(二):字典树、并查集、堆、哈希表、字符串的哈希方式、STL的常见容器及其接口

CS_boy的博客 1223

STL库配套习题及题解

这篇文章介绍了常用的C++ STL容器及其应用场景,通过洛谷OJ题目进行实践演示。主要内容包括:vector动态数组的逆向遍历(P1427)、string字符串处理(P1055)、map映射节省存储空间(P3613)、set去重操作(P1059)、stack栈结构模拟(P1165)、queue队列的基本操作(B3616)等。每部分都配有对应题目的代码实现,展示了STL容器在算法竞赛中的高效应用。文章还提供了数组模拟栈的替代方案,适合不同编程习惯的学习者。配套作者前一篇STL基础介绍,形成完整学习体系。

2302_79345957的博客 1119

STL模板中对map的小见解

今天在做map模板题目的时候,对题目的运行过程发生兴趣,于是调试一番,最终清楚了其运行机制,题目如下: Description 小明经营着一个不大的水果店.现在他想要一份水果销售情况的明细表,这样就可以很容易掌握所有水果的销售情况了. Input 输入包含多组数据.每组测试数据的第一行是一个整数M(0 Output 对于每一组测试数据,请你输出一份排版格式正确(

abc_ambition的博客 282

HDU 1029 map水题。STL模板题

#include &lt;bits/stdc++.h&gt; using namespace std; map&lt;int,int&gt;m;     map&lt;int,int&gt;::iterator it; int main() {     int n;     int a;     while(cin&gt;&gt;n)     {         m.clear();     ...

WaterisalsoCV的博客 497

基础数据结构

将两个集合合并询问两个元素是否在一个集合当中二. 基本原理:每个集合用一颗树来表示,树根的编号就是整个集合的编号,每个节点存储它的父节点,p[x]表示x的父节点三. 问题5. 如何求x的集合编号6. 如何合并两个集合:p[x]是x的集合编号,p[y]是y的集合编号,p[x] = y优化:压缩路径变长数组(数组长度可以动态变化) 倍增思想size()返回元素个数empty()返回是否为空clear()清空。

Yuzhee的博客 921

【数据结构1-3】集合

有时候,我们并不关心数据之间的前后关系,也不关心数据的层次关系。一些确定元素只是单纯的聚集在一起,这样的元素聚集体被称为集合。当希望知道某个数据是否存在一个集合中,或者两个元素是否在同一个集合中时,就需要使用一些集合数据结构来维护集合元素之间的关系。

Sebastian_Nova的博客 1700

【PAT】1124. Raffle for Weibo Followers (20)【Map使用】

题目描述 John got a full mark on PAT. He was so happy that he decided to hold a raffle(抽奖) for his followers on Weibo – that is, he would select winners from every N followers who forwarded his post, and ...

tjj1998的博客 249

21-bfs-走迷宫(简单模板题)

【代码】21-bfs-走迷宫(简单模板题)

m0_73939047的博客 407

数据结构map:解决桶排序问题的另一方式

作为C++的进阶者,相信各位对于桶排序并不陌生。然而,对于大多数进阶者来说,桶排序可以用一种STL库中的数据结构来替代。这就是我们今天要讲的:map

kill_everything的博客 876

c++之STL模板,set与map

为什么把set与map放在一起呢,因为里面有很多一样的特性与结构; 一,set集合 原理:   set里面的数据存放,不是数组模式,也不是指针链表模式,而是二叉树模式,和map也是二叉树模式,所以把set和map放在一起,这个二叉树,不是简单的二叉树,就查找二叉树与平衡二叉树的结合题,红黑树!   查找二叉树(BST):左儿子的值比我小,而右儿子的值比我大,宏观,我的左子树的值,...

优快云majia2015的博客 174

2020年OJ习题【map】

题目少也掩盖不了我的菜。。。。。。 保龄球-map map的key存得是保龄球数,value存得是位置 注意这里输出不能用cout,会超时 #include <bits/stdc++.h> using namespace std; map<int,int>vis; int n,q,m,p; int main() { ios::sync_with_stdio(fals...

shiroi2333的博客 477
上一篇: CF——Catch Overflow!(模拟)
下一篇: 牛客——Cow Contest(floyd简单运用解决传递闭包)
without_Zzz
博客等级 码龄8年 36粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值