蓝桥杯真题0团建dfs+哈希表/邻接表

dfs+邻接表储存或者哈希表的运用,考察我们对数据的存储

 

 

本题核心就是在求从根节点开始的两棵树相同的最长序列,首先确定用dfs进行深搜,对于节点的形式可以用邻接表,邻接矩阵,哈希表来进行存储数据。下面看代码

 邻接表

#include <bits/stdc++.h>
using namespace std;
int n,m;
int mp[200005];
int np[200005];
vector<int> v1[200005];
vector<int> v2[200005];
int cont;//记录最长的相同序列
void dfs(int x,int y,int sum)
{if(np[x]!=mp[y]) return;//如果序列开始不同直接returncont=max(cont,sum+1);//开始遍历相邻的节点for(auto& i:v1[x]){for(auto& j:v2[y]){dfs(i,j,sum+1);}}
}
int main()
{cin>>n>>m;for(int i=0;i<n;i++){cin>>np[i];}for(int j=0;j<m;j++){cin>>mp[j];}int l,r;for(int i=0;i<n-1;i++){cin>>l>>r;v1[l].push_back(r);}for(int i=0;i<m-1;i++){cin>>l>>r;//邻接表储存v2[l].push_back(r);}dfs(1,1,0);cout<<cont;return 0;
}

map 

#include <bits/stdc++.h>
#define N 200005
using namespace std;
map<int,vector<int>> m1,m2;
int n,m,a[N],b[N],ans,u,v;
void dfs(int x,int y,int count)
{if(a[x]!=b[y])return;ans=max(ans,count+1);//记录最长相同序列长度for(int i=0;i<m1[x].size();i++){for(int j=0;j<m2[y].size();j++){int a1=m1[x][i];int b1=m2[y][j];}dfs(a1,b1,count+1);//搜索所有相邻节点}
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=m;i++)cin>>b[i];for(int i=1;i<=n-1;i++){cin>>u>>v;m1[u].push_back(v);}for(int i=1;i<=m-1;i++){cin>>u>>v;m2[u].push_back(v);}dfs(1,1,0);
cout<<ans;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 AIStor、MLflow 和 KServe 将模型部署到 Kubernetes

在之前几篇关于 MLOps 工具的文章中&#xff0c;我展示了有多少流行的 MLOps 工具跟踪与模型训练实验相关的指标。我还展示了他们如何使用 MinIO 来存储作为模型训练管道一部分的非结构化数据。但是&#xff0c;一个好的 MLOps 工具应该做的不仅仅是管理您的实验、数据集和模型…

kali linux web扫描工具

Kali Linux是一款专为网络安全领域而打造的操作系统&#xff0c;提供了众多优秀的安全工具&#xff0c;其中就包括了强大的web扫描工具。Web扫描是网络安全检测的一个重要环节&#xff0c;它可以帮助安全专家检测网站的漏洞&#xff0c;提升网站的安全性。 Kali Linux中集成了…

Linux losetup循环设备

好的&#xff0c;以下是命令的中文解释和使用步骤&#xff1a; 命令解释&#xff1a; losetup -r /dev/loop0 /system/app.bin&#xff1a; losetup 是一个用于将文件与循环设备&#xff08;loop device&#xff09;关联的命令。-r 选项表示将循环设备设置为只读模式。/dev/lo…

【js逆向】

地址&#xff1a;aHR0cHM6Ly93d3cud2VpYm90b3AuY24vMi4wLw f12进入 debugger&#xff0c;过debugger 查看预览数据 全局搜索 请求网址中的 api.weibotop.cn 在下方疑似找到了加密和解密的函数 断点调试 控制台输出 那个n就是 常见的 cryptoJs库 const cryptoJs require(cry…

1.Intel BIOS 开发指南详细介绍

1. 引言 目的: Intel BIOS 开发指南旨在为开发者提供详细的指导,帮助他们理解和实现 Intel 平台上的 BIOS 功能。 适用对象: 适用于希望开发、调试和优化 BIOS 的硬件工程师、软件工程师和系统集成商。 版本信息: 确保你使用的是最新版本的指南,以获取最新的信息和最佳实…

deepseek在pycharm中的配置和简单应用

对于最常用的调试python脚本开发环境pycharm&#xff0c;如何接入deepseek是我们窥探ai代码编写的第一步&#xff0c;熟悉起来总没坏处。 1、官网安装pycharm社区版&#xff08;免费&#xff09;&#xff0c;如果需要安装专业版&#xff0c;需要另外找破解码。 2、安装Ollama…

【论文阅读】多模态——LSeg

文献基本信息 标题&#xff1a;Language-Driven Semantic Segmentation作者&#xff1a;Boyi Li、Kilian Q. Weinberger、Serge Belongie、Vladlen Koltun、Ren Ranftl单位&#xff1a;Cornell University、University of Copenhagen、Apple、Intel Labs会议/期刊&#xff1a;…

【MySQL基础-1】MySQL 用户管理指南:创建用户、修改密码与权限分配

MySQL 作为广泛使用的关系型数据库管理系统&#xff0c;用户管理和权限分配是其核心功能之一。合理创建用户、修改密码以及分配权限&#xff0c;不仅能保障数据库的安全性&#xff0c;还能有效控制用户的操作范围。本文将详细介绍如何在 MySQL 中创建用户、修改用户密码以及分配…

影刀RPA编码版与流程版解析

影刀RPA编码版是影刀RPA的一个高级版本&#xff0c;它结合了流程版的可视化操作和编码版的强大灵活性&#xff0c;以下是对影刀RPA编码版的详细介绍&#xff1a; 1. 功能对比 流程版&#xff1a; 可视化操作&#xff1a;通过拖拽式流程设计器&#xff0c;用户可以像搭积木一样…

20天 - TCP 和 UDP 有什么区别?说说 TCP 的三次握手?TCP 是用来解决什么问题?

TCP 和 UDP 有什么区别&#xff1f; TCP&#xff08;传输控制协议&#xff09;和 UDP&#xff08;用户数据报协议&#xff09;都是传输层的网络协议&#xff0c;它们的主要区别如下&#xff1a; 连接方式 TCP&#xff1a;面向连接的协议&#xff0c;类似于打电话&#xff0c…

【MySQL_05】语法简述(是语法,不详细介绍各种语句)

文章目录 一、基本规则二、标识符规则三、数据类型四、运算符五、关键字六、SQL 语句的通用语法结构 历史文章点击&#x1f449;&#xff1a;SQL &#x1f408;‍⬛github&#xff1a;https://github.com/mysql &#x1f4bb;官网&#xff1a; https://www.mysql.com &#…

JavaScript中的生成器函数详解

在 JavaScript 中&#xff0c;生成器函数 Generator Function 是一种特殊的函数&#xff0c;它允许你在函数执行过程中暂停和恢复。生成器函数通过 function* 语法定义&#xff0c;并使用 yield 关键字来控制函数的执行流程。生成器函数返回一个生成器对象&#xff0c;该对象遵…

计算机网络——交换机

一、什么是交换机&#xff1f; 交换机&#xff08;Switch&#xff09;是局域网&#xff08;LAN&#xff09;中的核心设备&#xff0c;负责在 数据链路层&#xff08;OSI第二层&#xff09;高效转发数据帧。它像一位“智能交通警察”&#xff0c;根据设备的 MAC地址 精准引导数…

Git合并工具在开发中的使用指南

在团队协作开发中&#xff0c;Git 是最常用的版本控制工具&#xff0c;而代码合并&#xff08;Merge&#xff09;是多人协作不可避免的环节。当多个开发者同时修改同一文件的相同区域时&#xff0c;Git 无法自动完成合并&#xff0c;此时需要借助合并工具&#xff08;Merge Too…

实现多语言适配

1.在res下创建多语言资源文件&#xff1a; 2.选择需要的语言 然后得到多种语言适配string文件&#xff1a; 3.代码设置多语言 object LanguageHelper {/*** 获取适配的 Context*/fun getAttachBaseContext(context: Context): Context {return if (Build.VERSION.SDK_INT > …

【学习方法一】

学习方法一 一、通用高效学习法二、学科专项方法三、工具与技术辅助四、习惯与心理策略五、避免常见误区总结六、进阶学习策略七、解决学习痛点八、场景化学习法九、资源与工具推荐十、个性化学习调整十一、长期学习心态十二、常见问题QA十三、应对特殊挑战的学习法十四、健康与…

Golang学习笔记_44——命令模式

Golang学习笔记_41——观察者模式 Golang学习笔记_42——迭代器模式 Golang学习笔记_43——责任链模式 文章目录 一、核心概念1. 定义2. 解决的问题3. 核心角色4. 类图 二、特点分析三、适用场景1. 事务管理系统2. 多媒体遥控器3. 操作审计系统 四、Go语言实现示例五、高级应用…

应急响应--流量分析

&#xff08;一&#xff09;Cobalt Strike流量特征分析 1.HTTP特征 源码特征&#xff1a; 在流量中&#xff0c;通过http协议的url路径&#xff0c;在checksum8解密算法计算后&#xff0c;32位的后门得到的结果是92&#xff0c;64位的后门得到的结果是93&#xff0c;该特征符…

CI/CD—Jenkins配置一次完整的jar自动化发布流程

背景&#xff1a; 实现设想&#xff1a; 要创建自动化发布&#xff0c;需要准备一台测试服务器提前安装好java运行所需的环境&#xff0c;JDK版本最好和Windows开发机器上的版本一致&#xff0c;在Jenkins上配置将构建好的jar上传到测试服务器上&#xff0c;测试服务器自动启动…

创建分区表ORA-14037

1、故障现象 在跑脚本的时候创建物化试图提示分区界限过高 2、解决方法 最终原因是&#xff1a;缺少了 这个 r34411分区&#xff0c;加上就好。 判断是物化视图创建的时候需要兼容所有分区的数据&#xff0c;所以报错&#xff0c;而分区表则不存在这种情况 3、测试验证 分区…