当前位置: 首页 > news >正文

【C++BFS】1466. 重新规划路线

本文涉及知识点

C++BFS算法

LeetCode1466. 重新规划路线

n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。
路线用 connections 表示,其中 connections[i] = [a, b] 表示从城市 a 到 b 的一条有向路线。
今年,城市 0 将会举办一场大型比赛,很多游客都想前往城市 0 。
请你帮助重新规划路线方向,使每个城市都可以访问城市 0 。返回需要变更方向的最小路线数。
题目数据 保证 每个城市在重新规划路线方向后都能到达城市 0 。

示例 1:

在这里插入图片描述

输入:n = 6, connections = [[0,1],[1,3],[2,3],[4,0],[4,5]]
输出:3
解释:更改以红色显示的路线的方向,使每个城市都可以到达城市 0 。
示例 2:

在这里插入图片描述

输入:n = 5, connections = [[1,0],[1,2],[3,2],[3,4]]
输出:2
解释:更改以红色显示的路线的方向,使每个城市都可以到达城市 0 。
示例 3:

输入:n = 3, connections = [[1,0],[2,0]]
输出:0

提示:

2 <= n <= 5 * 104
connections.length == n-1
connections[i].length == 2
0 <= connections[i][0], connections[i][1] <= n-1
connections[i][0] != connections[i][1]

C++BFS

所有边看成无向边,以0为起点求各节点的层次。枚举各边是否是层次大的指向层次小的。由于没有环,所以任意城市到达0,都是只有一条路径,即层次唯一。
BFS的状态表示:leves[0] = {0},leves[i]记录所有层次为i的城市。
BFS的后续状态:通过next枚举cur的临接点。
BFS的初始状态:leves[0] = {0}
BFS的返回值:无。
BFS的重复处理:leve[i]记录各城市层次,-1表示未处理。

代码

核心代码

class Solution {public:int minReorder(int n, vector<vector<int>>& connections) {vector<vector<int>> neiBo(n);for (const auto& v:connections) {neiBo[v[0]].emplace_back(v[1]);neiBo[v[1]].emplace_back(v[0]);}vector<int> leve(n, -1);queue<int> que;que.emplace(0);leve[0] = 0;while (que.size()) {const auto cur = que.front();que.pop();for (const auto& next : neiBo[cur]) {if (-1 != leve[next]) { continue; }leve[next] = leve[cur] + 1;que.emplace(next);}}int iRet = 0;for (const auto& v : connections) {iRet += (leve[v[0]] < leve[v[1]]);}return iRet;}};

单元测试

int n;vector<vector<int>> connections;TEST_METHOD(TestMethod1){n = 3, connections = { {0,2},{2,1} };auto res = Solution().minReorder(n, connections);AssertEx(2, res);}TEST_METHOD(TestMethod11){n = 6, connections = { {0,1},{1,3},{2,3},{4,0},{4,5} };auto res = Solution().minReorder(n, connections);AssertEx(3, res);}TEST_METHOD(TestMethod12){n = 5, connections = { {1,0},{1,2},{3,2},{3,4} };auto res = Solution().minReorder(n, connections);AssertEx(2, res);}TEST_METHOD(TestMethod13){n = 3, connections = { {1,0},{2,0} };auto res = Solution().minReorder(n, connections);AssertEx(0, res);}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

相关文章:

【C++BFS】1466. 重新规划路线

本文涉及知识点 CBFS算法 LeetCode1466. 重新规划路线 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部…...

服务器并发模型

服务器&#xff1a; 单循环服务器&#xff1a;服务器在同一时刻只能响应一个客户端的请求 并发服务器模型&#xff1a;服务器在同一时刻可以响应多个客户端的请求 UDP:无连接 TCP:有连接 1.多进程 资源空间消耗大 效率低 2.多线程 相…...

Chapter 23 数据可视化——地图

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、基础绘图二、视觉映射三、案例分析 前言 随着地理信息系统&#xff08;GIS&#xff09;技术的迅猛发展和大数据时代的到来&#xff0c;数据可视化已经成为分析和理…...

Linux笔记 --- 组合数据类型

结构体 简单的定义结构体的方法 struct student {char name;int age;float score; };//使用student模板创建两个结构体变量 struct student Jack,Rose; 结构体中可以存放除了函数以外的任何数据类型的数据&#xff0c;在创建结构体时student被称为结构体模板名称&#xff0c;…...

DaoCloud-Dockfile文件NGINX文件

Dockfile文件 安装依赖&#xff0c;打包&#xff0c;配置NGINX代理&#xff0c;最后把打完的包复制到服务器相应的文件夹下&#xff0c;构建镜像成功。 # syntax docker/dockerfile:experimental FROM xx.xx.xx.xx/public/node:16.14.2 as builder# LABEL maintainer"e…...

耳机行业中MIC ENC

0 Preface/Foreword ENC&#xff1a; Environment Noise Cancellation&#xff0c;环境降噪&#xff0c;主要指在通话过程中&#xff0c;戴着ENC通话降噪耳机的使用者&#xff0c;即使在嘈杂的环境&#xff0c;比如在嘈杂的街区&#xff0c;开着窗运行的汽车上&#xff0c;说话…...

python-自动化办公-Excel-Openpyxl

Python处理Excel数据之Openpyxl 1.1 Openpyxl库的安装使用 openpyxl模块是一个读写Excel 2010文档的 Python 库&#xff0c;如果要处理更早格式的Excel文档&#xff0c;需要用到额外的库&#xff0c;openpyxl是一个比较综合的工具&#xff0c;能够同时读取和修改Excel文档。其…...

图形编辑器基于Paper.js教程10:导入导出svg,导入导出json数据

深入了解Paper.js&#xff1a;实现SVG和JSON的导入导出功能 Paper.js是一款强大的矢量绘图JavaScript库&#xff0c;非常适合用于复杂的图形处理和交互式网页应用。本文将详细介绍如何在Paper.js项目中实现SVG和JSON格式的导入导出功能&#xff0c;这对于开发动态图形编辑器等…...

[STM32][Bootloader][教程]STM32 HAL库 Bootloader开发和测试教程

0. 项目移植 对于不想知道其执行过程的朋友来说&#xff0c;可以直接移植&#xff0c;我的板子是STM32F411CER6, 512K M4内核 项目地址&#xff1a; Bootloader&#xff08;可以自己写标志位用于自测&#xff0c;项目中这部分代码已经被注释&#xff0c;可以打开自行测试&…...

如何手写一个SpringBoot框架

你好&#xff0c;我是柳岸花开。 在这篇文章中&#xff0c;我们将手写模拟SpringBoot的核心流程&#xff0c;让大家能够以一种简单的方式了解SpringBoot的大概工作原理。 项目结构 我们创建一个工程&#xff0c;包含两个模块&#xff1a; springboot模块&#xff0c;表示Spring…...

vite解决前端跨域步骤

Vite 解决跨域问题的原理主要是通过其内置的开发服务器功能实现的&#xff0c;具体来说&#xff0c;是通过 HTTP 代理&#xff08;HTTP Proxy&#xff09;机制。在开发环境中&#xff0c;Vite 服务器可以配置为一个代理服务器&#xff0c;将前端应用发出的请求转发到实际的后端…...

同步交互与异步交互:深入解析与选择

同步交互与异步交互&#xff1a;深入解析与选择 1、同步交互2、异步交互3、选择策略 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在软件开发的世界里&#xff0c;交互方式主要分为两大类&#xff1a;同步与异步。下面是对这两种方式的解…...

Day1

首先&#xff0c;大概学习了一下用anaconda去创建一个环境&#xff08;因为Django是有python版本的要求&#xff09;&#xff0c;然后学着去切换环境。 创建环境&#xff1a;conda create -n django_study python3.10 激活环境&#xff1a;conda activate django_study 删除环…...

Introduction to Data Analysis with PySpark

1.DataFrame and RDDs 2.Spark Architecture 3. Data Formats and Data Sources 倘若您觉得我写的好&#xff0c;那么请您动动你的小手粉一下我&#xff0c;你的小小鼓励会带来更大的动力。Thanks....

基于双PI控制器结构的六步逆变器供电无刷直流电机调速simulink仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 无刷直流电机&#xff08;BLDCM&#xff09;原理 4.2 六步换相逆变器 4.3 双PI控制器设计 5.完整工程文件 1.课题概述 基于双PI控制器结构的六步逆变器供电无刷直流电机调速simulink仿真。双PI控制…...

双向链表的基本操作

#include<iostream> #include<cmath> #include<cstring> using namespace std; typedef long long ll; typedef struct line {int data;struct line *pre;//前指针struct line *next;//后指针 }line,*a; line* init_line(line*head) {cout<<"请输…...

modbus tcp和modbusRTU的区别是什么?

Modbus是一种应用广泛的通信协议&#xff0c;主要用于工业自动化和过程控制系统。Modbus有多种变体&#xff0c;其中Modbus TCP和Modbus RTU是最常见的两种。以下是它们之间的主要区别&#xff1a; 1. 基本定义 Modbus RTU (Remote Terminal Unit): 是基于串行通信的协议&am…...

web小游戏开发:拼图(四)对调和移动拼图玩法的实现

web小游戏开发:拼图(四)对调和移动拼图玩法的实现 对调方式对调模式实现移动方式移动的实现小结对调方式 在完成了原始拼图玩法后,剩下两个玩法其实相对就变得简单的多了。 对调模式,简单来说,就是选中两个图块,然后位置对调一下。 那么,我们来整理一下,看看需要哪…...

前端:Vue学习 - 智慧商城项目

前端&#xff1a;Vue学习 - 智慧商城项目 1. vue组件库 > vant-ui2. postcss插件 > vw 适配3. 路由配置4. 登录页面静态布局4.1 封装axios实例访问验证码接口4.2 vant 组件 > 轻提示4.3 短信验证倒计时4.4 登录功能4.5 响应拦截器 > 统一处理错误4.6 登录权证信息存…...

KVM调整虚拟机与CPU铆钉(绑定)关系

虚拟机铆钉CPU 把虚拟机的vCPU绑定在物理CPU上&#xff0c;即VCPU只在绑定的物理CPU上调度&#xff0c;在特定场景下达到提升虚拟机性能的目的。比如在NUMAQ系统中&#xff0c;把vCPU绑定在同一个NUMA节点上&#xff0c;可以避免CPU跨节点访问内存&#xff0c;避免影响虚拟机运…...

告别启动盘识别难题:手把手教你搞定CentOS 7在SR650上的UEFI启动与自定义分区(含/dev/sdX查找技巧)

告别启动盘识别难题&#xff1a;手把手教你搞定CentOS 7在SR650上的UEFI启动与自定义分区&#xff08;含/dev/sdX查找技巧&#xff09; 在服务器运维领域&#xff0c;系统安装看似基础却暗藏玄机。特别是当面对企业级硬件如Lenovo SR650时&#xff0c;UEFI启动模式与传统BIOS的…...

Cursor Pro永久免费使用终极指南:如何绕过试用限制完整教程

Cursor Pro永久免费使用终极指南&#xff1a;如何绕过试用限制完整教程 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached you…...

工业 AI 赋能采购:智能供应商匹配重构招标流程

Q1&#xff1a;传统企业采购招标&#xff0c;供应商对接与筛选存在哪些固有痛点&#xff1f;传统工业企业采购招标模式高度依赖人工经验&#xff0c;存在三大核心痛点&#xff1a;供应商资源固化&#xff1a;每次招标都需从零手动联络供应商&#xff0c;仅依靠采购人员个人记忆…...

Vit工程化应用(timm 库)

pip install timm import timm import torch from PIL import Image import requests from io import BytesIO# 1. 加载模型 (ViT Base版本&#xff0c;16x16图块&#xff0c;在ImageNet-1k上预训练) # 设置 pretrainedTrue 自动下载权重 model timm.create_model(vit_base_pa…...

从极坐标栅格到地面点云:一种基于坡度与邻域一致性的分割实践

1. 极坐标栅格构建&#xff1a;自动驾驶的"地面扫描仪" 想象你正在玩一款赛车游戏&#xff0c;车辆需要自动识别哪些是能开的平坦路面&#xff0c;哪些是必须绕开的障碍物。现实中自动驾驶车辆面临同样的挑战&#xff0c;而极坐标栅格就是它的"地面扫描仪"…...

一键获取国家中小学智慧教育平台电子课本:开源解析工具完全指南

一键获取国家中小学智慧教育平台电子课本&#xff1a;开源解析工具完全指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具&#xff0c;帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#xff0c;让您更方便地获取课本内容。 …...

解放双手:5分钟快速上手智慧树自动化学习工具的完整指南

解放双手&#xff1a;5分钟快速上手智慧树自动化学习工具的完整指南 【免费下载链接】Autovisor 2025智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor 你是否厌倦了每天重复点击智慧树视频的枯燥…...

告别训练中断:在PyCharm中利用Tmux实现远程GPU服务器的持久化会话

1. 为什么需要持久化训练会话&#xff1f; 作为一名长期在深度学习领域摸爬滚打的工程师&#xff0c;我最头疼的就是训练过程中突然断网或者需要关闭电脑的情况。想象一下&#xff0c;你正在用PyCharm远程连接公司的GPU服务器训练一个需要48小时的模型&#xff0c;突然家里停电…...

如何评估Diem投资价值:代币经济学与估值模型终极指南

如何评估Diem投资价值&#xff1a;代币经济学与估值模型终极指南 【免费下载链接】diem Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world. 项目地址: https://gitcode.com/gh_mirrors/di/die…...

Hermes Agent 可视化监控与文档生成工具 hermes-dashboard 详解

1. 项目概述与核心价值如果你正在使用 Hermes Agent 进行 AI 智能体开发&#xff0c;或者对 Agent 的内部运行状态感到好奇&#xff0c;那么你很可能需要一个“上帝视角”。hermes-dashboard正是这样一个工具&#xff0c;它为你提供了一个实时的监控仪表盘和一个自动生成的、可…...