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

LC-1466. 重新规划路线(DFS、BFS)

1466. 重新规划路线

中等

n 座城市,从 0n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。

路线用 connections 表示,其中 connections[i] = [a, b] 表示从城市 ab 的一条有向路线。

今年,城市 0 将会举办一场大型比赛,很多游客都想前往城市 0 。

请你帮助重新规划路线方向,使每个城市都可以访问城市 0 。返回需要变更方向的最小路线数。

题目数据 保证 每个城市在重新规划路线方向后都能到达城市 0 。

示例 1:

img

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

示例 2:

img

输入: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 * 10^4
  • connections.length == n-1
  • connections[i].length == 2
  • 0 <= connections[i][0], connections[i][1] <= n-1
  • connections[i][0] != connections[i][1]

BFS

class Solution {/**构件图时标志是正边还是反边,一次bfs如果是反边则需要res+1*/List<int[]>[] g;public int minReorder(int n, int[][] connections) {g = new ArrayList[n];Arrays.setAll(g, e -> new ArrayList<int[]>());for(int[] c : connections){int x = c[0], y = c[1];g[x].add(new int[]{y, -1}); // 1标志正边,-1标志反边g[y].add(new int[]{x, 1});}boolean[] vis = new boolean[n];Deque<Integer> dq = new ArrayDeque<>();dq.add(0);vis[0] = true;int res = 0;while(!dq.isEmpty()){int x = dq.pollLast();for(int[] q : g[x]){int y = q[0], dir = q[1];if(vis[y]) continue;vis[y] = true;if(dir == -1) res += 1;dq.addFirst(y);}}return res;}
}

DFS

class Solution {   List<int[]>[] g;int res = 0;boolean[] vis;public int minReorder(int n, int[][] connections) {g = new ArrayList[n];Arrays.setAll(g, e -> new ArrayList<int[]>());for(int[] c : connections){int x = c[0], y = c[1];g[x].add(new int[]{y, -1}); // 1标志正边,-1标志反边g[y].add(new int[]{x, 1});}vis = new boolean[n];dfs(0, -1);return res;}public void dfs(int x, int fa){vis[x] = true;for(int[] q : g[x]){int y = q[0], dir = q[1];if(vis[y]) continue;if(dir == -1) res += 1;dfs(y, x);}}
}

相关文章:

LC-1466. 重新规划路线(DFS、BFS)

1466. 重新规划路线 中等 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部决定重新规划路线&#xff0c…...

自动数据增广论文笔记 | AutoAugment: Learning Augmentation Strategies from Data

谷歌大脑出品 paper: https://arxiv.org/abs/1805.09501 这里是个论文的阅读心得&#xff0c;笔记&#xff0c;不等同论文全部内容 文章目录 一、摘要1.1 翻译1.2 笔记 二、(第3部分)自动增强:直接在感兴趣的数据集上搜索最佳增强策略2.1 翻译2.2 笔记 三、跳出论文&#xff0c…...

CTF 7

信息收集 存活主机探测 arp-scan -l 端口探测 nmap -sT --min-rate 10000 -p- 192.168.0.5 服务版本等信息 nmap -sT -sV -sC -O -p22,80,137,138,139,901,5900,8080,10000 192.168.0.5Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-02 21:23 CST Stats: 0:01:30 elaps…...

无公网IP环境Windows系统使用VNC远程连接Deepin桌面

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…...

java--枚举

1.枚举 枚举是一种特殊类 2.枚举类的格式 注意&#xff1a; ①枚举类中的第一行&#xff0c;只能写一些合法的标识符(名称)&#xff0c;多个名称用逗号隔开。 ②这些名称&#xff0c;本质是常量&#xff0c;每个常量都会记住枚举类的一个对象。 3.枚举类的特点 ①枚举类的…...

JVM垃圾回收机制GC

一句话介绍GC&#xff1a; 自动释放不再使用的内存 一、判断对象是否能回收 思路一&#xff1a;引用计数 给这个对象里安排一个计数器&#xff0c; 每次有引用指向它&#xff0c; 就把计数器1&#xff0c; 每次引用被销毁&#xff0c;计数器-1&#xff0c;当计数器为0的时候…...

详解JAVA中的@ApiModel和@ApiModelProperty注解

目录 前言1. ApiModel注解2. ApiModelProperty注解3. 实战 前言 在Java中&#xff0c;ApiModel和ApiModelProperty是Swagger框架&#xff08;用于API文档的工具&#xff09;提供的注解&#xff0c;用于增强API文档的生成和展示。这两者搭配使用更佳 使用两者注解&#xff0c;…...

TiDB专题---2、TiDB整体架构和应用场景

上个章节我们讲解了TiDB的发展和特性&#xff0c;这节我们讲下TiDB具体的架构和应用场景。首先我们回顾下TiDB的优势。 TiDB的优势 与传统的单机数据库相比&#xff0c;TiDB 具有以下优势&#xff1a; 纯分布式架构&#xff0c;拥有良好的扩展性&#xff0c;支持弹性的扩缩容…...

性能调优入门

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、性能定律和数理基础 1.三个定律法则 (1)帕累托法则 我它也被称为 80/20 法则、关键少数法则&#xff0c;或者八二法则。人们在生活中发现很多…...

JavaWeb | 验证码 、 文件的“上传”与“下载”

目录&#xff1a; 验证码 和 文件的“上传”与“下载”1.验证码1.1在JSP上开发验证码 2.“文件上传” 和 “文件下载”2.1“文件上传 ”2.2“文件下载” 验证码 和 文件的“上传”与“下载” 1.验证码 验证码&#xff1a;就是由服务器生成的一串随机数字或符号形成一幅图片&am…...

服务器感染了.halo勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 随着科技的不断发展&#xff0c;网络安全问题日益突出&#xff0c;而.halo勒索病毒正是这个数字时代的一大威胁。本文将深入介绍.halo勒索病毒的特点&#xff0c;解释在受到攻击后如何有效恢复被加密的数据文件&#xff0c;并提供一些建议以预防未来可能的威…...

docker安装elasticsearch8.5.0和kibana

服务器环境&#xff0c;centos7 一、安装elasticsearch 1. 创建一个es和kibana通用的网络 docker network create es-net 2. 拉取es镜像&#xff0c;这里选择8.5.0版本 docker pull elasticsearch:8.5.03. 创建挂载目录&#xff0c;并授权 mkdir /usr/local/install/ela…...

如何使用内网穿透工具实现公网访问GeoServe Web管理界面

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址6. 结语 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除…...

koa2项目中封装log4js日志输出

1.日志输出到控制台 npm i log4js -D 封装log4js文件&#xff1a; 注意&#xff1a;每次都要重新获取log4js.getLogger(debug)级别才能生效 const log4js require("log4js");const levels {trace: log4js.levels.TRACE,debug: log4js.levels.DEBUG,info: log4js.…...

C# WPF上位机开发(抽奖软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 每到年末或者是尾牙的时候&#xff0c;很多公司都会办一些年终的清楚活动&#xff0c;感谢员工过去一年辛苦的付出。这个时候&#xff0c;作为年会…...

搭建部署Hadoop2.x和3.x的区别

文章目录 2.x 和 3.x 的区别Java最小支持版本常用的端口号配置文件Classpath隔离NodeManager重连 进入官网自行查阅 2.x 和 3.x 的区别 Java最小支持版本 Hadoop 2.x&#xff1a;2.7 版本需要 Java 7&#xff0c;2.6 以及更早期版本支持 Java 6Hadoop 3.x&#xff1a;最低要求…...

Java爬虫攻略:应对JavaScript登录表单

问题背景 在进行网络抓取数据时&#xff0c;经常会遇到需要登录的网站&#xff0c;特别是使用JavaScript动态生成登录表单的情况。传统的爬虫工具可能无法直接处理这种情况&#xff0c;因此需要一种能够模拟用户行为登录的情况解决方案。 在实际项目中&#xff0c;我们可能需要…...

基于单片机的电子密码锁设计

1&#xff0e;设计任务 利用AT89C51单片机为核心控制元件,设计一个简易的电子密码锁&#xff0c;可设置四位密码&#xff0c;输入错误三次&#xff0c;报警灯亮起&#xff08;红灯亮起&#xff09;&#xff0c;输入正确&#xff0c;绿灯闪烁三次。可通过LCD显示屏查看密码&…...

ChatGPT学习笔记

1 ChatGPT架构图 &#xff08;ChatGPT_Diagram.svg来自于【OpenA | Introducing ChatGPT】&#xff09; 2 模型训练 ChatGPT在训练时使用了PPO方法&#xff1b;...

One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记

One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记 Abstract 一对一&#xff08;o2o&#xff09;标签分配对基于变换器的端到端检测起着关键作用&#xff0c;最近已经被引入到全卷积检测器中&#xff0c;用于端到端密集检测。然而&#xff0c;o2o可能因为…...

Loop窗口管理:终极Mac多窗口高效布局指南

Loop窗口管理&#xff1a;终极Mac多窗口高效布局指南 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 你是不是经常在Mac上同时打开十几个窗口&#xff0c;然后迷失在层层叠叠的界面中&#xff1f;写代码…...

书匠策AI官网www.shujiangce.com|别再死磕“洗稿式降重“了!这才是2025论文通关的正确姿势

&#x1fae0; 你有没有经历过这种"窒息时刻"&#xff1f; 凌晨两点&#xff0c;你对着查重报告&#xff0c;满屏飘红像开了大灯的KTV。你一句一句地改&#xff0c;把"因此"换成"所以"&#xff0c;把"研究表明"换成"分析发现&qu…...

AutoGen多角色协作内幕:如何在对话中实现复杂任务的自动分解

AutoGen多角色协作内幕:对话式复杂任务自动分解的底层原理与工程实现 关键词 AutoGen、多智能体协作、任务自动分解、大语言模型对话系统、多角色工作流、LLM编排、工具调用集成 摘要 本文从第一性原理出发,系统拆解微软AutoGen框架中多角色协作下的复杂任务自动分解机制…...

内容创作团队如何利用多模型API提升图文生成效率

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 内容创作团队如何利用多模型API提升图文生成效率 对于新媒体运营、电商内容或市场团队而言&#xff0c;持续产出高质量的图文内容是…...

解决Claude Code频繁封号问题转向Taotoken稳定服务的配置指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 解决Claude Code频繁封号问题转向Taotoken稳定服务的配置指南 如果你在使用 Claude Code 时遇到了账号不稳定或 Token 额度受限的问…...

AgentOps:AI Agent可观测性平台,解决LLM应用开发调试难题

1. 项目概述&#xff1a;从“AI Agent”到“AgentOps”的工程化跃迁如果你最近在折腾AI Agent&#xff0c;或者正带领团队尝试将大语言模型&#xff08;LLM&#xff09;的能力集成到你的产品流程中&#xff0c;那你大概率会遇到一个共同的瓶颈&#xff1a;开发调试过程像在“开…...

RK3566(泰山派)实战:D310T9362V1SPEC触摸屏驱动从零适配与调试(竖屏)

1. RK3566与D310T9362V1SPEC屏幕简介 RK3566是瑞芯微推出的一款高性能嵌入式处理器&#xff0c;采用四核Cortex-A55架构&#xff0c;主频可达1.8GHz。这款芯片在工业控制、智能家居和物联网设备中广泛应用&#xff0c;特别适合需要图形显示和触摸交互的场景。我最近在一个智能终…...

终极窗口分辨率自定义指南:SRWE如何突破显示限制

终极窗口分辨率自定义指南&#xff1a;SRWE如何突破显示限制 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 在数字创作和游戏体验的领域中&#xff0c;窗口分辨率自定义工具SRWE&#xff08;Simple Runtime Wi…...

代码语义可视化架构的突破性实现:MultiHighlight如何将代码理解效率提升300%

代码语义可视化架构的突破性实现&#xff1a;MultiHighlight如何将代码理解效率提升300% 【免费下载链接】MultiHighlight Jetbrains IDE plugin: highlight identifiers with custom colors &#x1f3a8;&#x1f4a1; 项目地址: https://gitcode.com/gh_mirrors/mu/MultiH…...

HPM6750 CAN FD实战:从波特率配置到高效收发,避坑指南

1. 项目概述&#xff1a;从经典CAN到CAN FD的实战入门作为一名长期在嵌入式领域摸爬滚打的开发者&#xff0c;我深知现场总线技术&#xff0c;尤其是CAN总线&#xff0c;在工业控制、汽车电子等领域的核心地位。随着数据吞吐量需求的激增&#xff0c;经典CAN的1Mbps带宽逐渐捉襟…...