PTA L2-031 深入虎穴 dfs与bfs版

著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。

内线告诉他,情报就藏在迷宫的最深处。但是这个迷宫太大了,他需要你的帮助 —— 请编程帮他找出距离入口最远的那扇门。

输入格式:

输入首先在一行中给出正整数 N(<105),是门的数量。最后 N 行,第 i 行(1≤i≤N)按以下格式描述编号为 i 的那扇门背后能通向的门:

K D[1] D[2] ... D[K]

其中 K 是通道的数量,其后是每扇门的编号。

输出格式:

在一行中输出距离入口最远的那扇门的编号。题目保证这样的结果是唯一的。

输入样例:

13
3 2 3 4
2 5 6
1 7
1 8
1 9
0
2 11 10
1 13
0
0
1 12
0
0

输出样例:

12

做法:

1.建图(用邻接表存图)

2.搜索图

说一下:

dfs将 每个与1连通的点 到1的距离算出来了,所以还要 遍历一次 距离数组 才知道答案是谁

bfs队尾最后一个元素即是答案(题目保证结果是唯一的)。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 100010;int h[N],e[2 * N],ne[2 * N],idx;
int dist[N],ans;
int q[N];
int n = 0;void add(int a,int b)
{e[idx] = b,ne[idx] = h[a],h[a] = idx++;
}void dfs(int u,int cnt)
{dist[u] = cnt;for(int i = h[u];i != -1;i = ne[i]){int j = e[i];if(!dist[j]) dfs(j,cnt + 1);}
}
int bfs(int u)
{int hh = 0,tt = -1;dist[u] = 1;q[++tt] = u;while(hh <= tt){int t = q[hh++];for(int i = h[t];i != -1;i = ne[i]){int j = e[i];if(!dist[j]){dist[j] = dist[t] + 1;q[++tt] = j;}}}return q[tt];
}
int main()
{scanf("%d",&n);memset(h,-1,sizeof h);for(int i = 1;i <= n;i++){int k = 0;scanf("%d",&k);while(k--){int b = 0;scanf("%d",&b);add(i,b),add(b,i);}}// dfs(1,1);//dfs// for(int i = 1;i <= n;i++)//     if(dist[i] > dist[ans]) ans = i;// printf("%d\n",ans);printf("%d\n",bfs(1));//bfsreturn 0;
}

结果: 

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

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

相关文章

Python库xarray:强大的多维数据处理工具

Python库xarray&#xff1a;强大的多维数据处理工具 在数据科学和科学计算领域&#xff0c;处理多维数据是一项常见而重要的任务。Python库xarray是一个功能强大的工具&#xff0c;专门用于处理、分析和可视化多维数据集。本文将深入介绍xarray库的特性、用法和优势&#xff0c…

基于STM32的个人健康助手的设计

基于STM32的个人健康助手的设计 一、摘要 随着科技的进步和人们生活水平的提高&#xff0c;个人健康管理变得越来越重要。本文介绍了一种基于STM32的个人健康助手的设计&#xff0c;该设计结合了嵌入式系统、传感器技术和数据分析等先进技术&#xff0c;旨在为用户提供便捷、…

MySQL的zerofill 零填充

在 MySQL 中&#xff0c;ZEROFILL 是一种属性&#xff0c;用于在创建表时指定数值列的显示宽度&#xff0c;并在值不足指定宽度时使用零填充&#xff08;前导零&#xff09;。当将 ZEROFILL 属性应用于一个整数列时&#xff0c;MySQL 会在显示该整数时使用零填充以达到指定的宽…

babel起手式

Babel7 以下是各个 ECMAScript 版本引入的一些主要新语法和功能的汇总 ES5 / ECMAScript 5&#xff08;2009年&#xff09; 严格模式 "use strict"。JSON 对象。Array.prototype.forEach()、Array.prototype.map()、Array.prototype.filter()、Array.prototype.redu…

AI智能打架监测报警---豌豆云

AI智能识别打架监测报警是一种专门用于监测和预警打架事件的安全设备。 这种智能系统一般配备高清摄像头和智能分析算法&#xff0c;可以实时监测监控区域内的人员活动&#xff0c;并在检测到打架行为时立即触发警报系统。 打架智能监测报警系统是现代安防领域中一种重要的监…

这回轮到鸿蒙禁用安卓了!!!

1月18日&#xff0c;鸿蒙生态千帆仪式上&#xff0c;华为正式宣布了HarmonyOS NEXT&#xff08;下简称鸿蒙星河版或纯血鸿蒙&#xff09;开发者预览已向开发者开放申请&#xff0c;纯血鸿蒙开始走向普及阶段。伴随着不再兼容安卓的纯血鸿蒙铺开&#xff0c;鸿蒙走进了运营属于自…

计算机408炸了!大多数人都栽在这门课上

组成原理>>数据结构>操作系统>计算机网络 在本科时&#xff0c;我在学习组成原理之前已经学过数字电路和模拟电路&#xff0c;但在接下来学习组成原理时&#xff0c;我依然感到困难。也许是因为自己理解能力不足&#xff0c;总觉得难以掌握&#xff0c;甚至在考研…

算法D57 | 动态规划17 | 647. 回文子串 516.最长回文子序列 动态规划总结篇

647. 回文子串 动态规划解决的经典题目&#xff0c;如果没接触过的话&#xff0c;别硬想 直接看题解。 代码随想录 Python: class Solution:def countSubstrings(self, s: str) -> int:n len(s)dp [[0]*n for _ in range(n)]dp[0] [1]*nresult nfor i in range(1, n)…

算法打卡day28|贪心算法篇02|Leetcode 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II

算法题 Leetcode 122.买卖股票的最佳时机 II 题目链接:122.买卖股票的最佳时机 II 大佬视频讲解&#xff1a;买卖股票的最佳时机 II视频讲解 个人思路 因为只有一只股票&#xff0c;且两天作一个交易单元&#xff0c;那每次只收集正利润就可以最终最多可以获取的利润&#xf…

haproxy和keepalived的区别与联系

HAProxy&#xff08;High Availability Proxy&#xff09; 是一个开源的、高效且可靠的解决方案&#xff0c;主要用于负载均衡。它工作在应用层&#xff08;第七层&#xff09;&#xff0c;支持多种协议&#xff0c;如HTTP、HTTPS、FTP等。HAProxy通过健康检查机制持续监控后…

Unity 学习日记 8.2D物理引擎

1.2D刚体的属性和方法 2.碰撞器

window GPU 知识总结

1、gpu压测工具总结 参考链接&#xff1a;windows cpu、gpu 压测工具-腾讯云开发者社区-腾讯云 2、gpu 驱动安装过程 参考链接&#xff1a;windows10nvidia驱动cuda10.1cudnn安装教程-腾讯云开发者社区-腾讯云 3、执行nvidia-smi命令过程 参考链接&#xff1a;Windows10 中…

[单调队列] 滑动窗口

滑动窗口 /【模板】单调队列 题目描述 有一个长为 n n n 的序列 a a a&#xff0c;以及一个大小为 k k k 的窗口。现在这个从左边开始向右滑动&#xff0c;每次滑动一个单位&#xff0c;求出每次滑动后窗口中的最大值和最小值。 例如&#xff0c;对于序列 [ 1 , 3 , − …

Android第一行代码——快速入门 Kotlin 编程(5.4 动态加载布局的技巧)

目录 5.4 动态加载布局的技巧 5.4.1 使用限定符 5.4.2 使用最小宽度限定符 5.4 动态加载布局的技巧 虽然动态添加 Fragment 的功能很强大,可以解决很多实际开发中的问题,但是它毕竟只是在一 个布局文件中进行一些添加和替换操作。如果程序能够…

产品推荐 | 基于 Zynq UltraScale+ XCZU27DR的 FACE-RFSoC-C高性能自适应射频开发平台

一、产品概述 FACE-RFSOC-C自适应射频开发平台&#xff0c;是FACE系列新一代的产品。 平台搭载有16nm工艺的Zynq UltraScale™ RFSoC系列主器件。该器件集成数千兆采样RF数据转换器和ARM Cortex-A53处理子系统和UltraScale可编程逻辑&#xff0c;是一款单芯片自适应射频平台。…

24计算机考研调剂 | 广州医科大学

广州医科大学何玉成老师招收机器人、生物医学工程、机械自动化相关专业学硕调剂生 考研调剂相关信息 一、单位简介 广州医科大学是一所以医学为优势和特色的国家“双一流”建设高校。生物医学工程学院于2022年4月成立&#xff0c;由中国科学院院士徐涛教授担任院长。学…

Docker在虚拟机中的基本配置

1、Docker解决依赖兼容问题&#xff0c;Docker是如何实现的呢&#xff1f; Docker为了解决依赖的兼容问题的&#xff0c;采用了两个手段&#xff1a; - 将应用的Libs&#xff08;函数库&#xff09;、Deps&#xff08;依赖&#xff09;、配置与应用一起打包 - 将每个应用放到…

IOS面试题编程机制 56-60

56. IOS自动释放池是什么,如何工作?自动释放池是cocoa提供的帮助我们管理对象内存的一个工具。当我们像一个对象发送autorelease消息时,这个对象就自动加入到最新的自动释放池中,当自动释放池被销毁的时候,会自动向自动释放池中的所有对象发送一条release消息。也就是说我们…

玩具蛇(蓝桥杯)

文章目录 玩具蛇题目描述答案&#xff1a;552dfs 玩具蛇 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小蓝有一条玩具蛇&#xff0c;一共有 16 节&#xff0c;上面标着数字 1 至 16。每一节都是一个正方形的形…

seata测试demo(订单)

seata工作流程: seata对分布式事务的协调和控制就是31 1>XID&#xff1a;XID是全局事务的唯一标识&#xff0c;它可以在服务的调用链路中传递&#xff0c;绑定到服务的事务上下文中。 3>TC->TM->RM TC:事务协调器>就是seata 负责维护全局事务和分支事务的状…