文章目录

  • 1. 题目
  • 2. 解题
    • 2.1 DFS
    • 2.2 BFS

1. 题目

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 * 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]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reorder-routes-to-make-all-paths-lead-to-the-city-zero
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

建立无向图,在无向图上dfs 或者 bfs,从0开始
无向图上记录上是正向还是反向,遍历的时候,遇到反向的需要计数+1

2.1 DFS

class Solution {int count = 0;unordered_map<int,unordered_map<int, bool>> m;
public:int minReorder(int n, vector<vector<int>>& connections) {vector<bool> vis(n,false);for(auto& c : connections){m[c[0]][c[1]] = true;//等于true的需要反转m[c[1]][c[0]] = false;}vis[0] = true;dfs(0, vis);return count;}void dfs(int i, vector<bool> &vis){for(auto it = m[i].begin(); it != m[i].end(); ++it){if(!vis[it->first]){if(m[i][it->first])//是反向的count++;vis[it->first] = true;dfs(it->first, vis);}}}
};

960 ms 114.2 MB

2.2 BFS

class Solution {
public:int minReorder(int n, vector<vector<int>>& connections) {int count = 0, id;unordered_map<int,unordered_map<int, bool>> m;vector<bool> vis(n,false);for(auto& c : connections){m[c[0]][c[1]] = true;//等于true的需要反转m[c[1]][c[0]] = false;}vis[0] = true;queue<int> q;q.push(0);while(!q.empty()){id = q.front();q.pop();for(auto it = m[id].begin(); it != m[id].end(); ++it){if(!vis[it->first]){if(m[id][it->first])count++;vis[it->first] = true;q.push(it->first);}}}return count;}
};

984 ms 115.2 MB

LeetCode 1466. 重新规划路线(DFS/BFS)相关推荐

  1. LeetCode 733. 图像渲染(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr ...

  2. LeetCode 226. 翻转二叉树(DFS BFS)

    文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 翻转一棵二叉树. 示例:输入:4/ \2 7/ \ / \ 1 3 6 9输出:4/ \7 2/ \ / \ 9 ...

  3. LeetCode算法题13:DFS/BFS - 单词搜索

    文章目录 单词搜索 DFS : 小小的优化 总结 单词搜索 题目链接:https://leetcode-cn.com/problems/word-search/ 题目描述: 给定一个 m x n 二维 ...

  4. leetcode之DFS+BFS+DSU刷题总结2

    leetcode之DFS+BFS+DSU刷题总结2 1-对称二叉树 题目链接:题目链接戳这里!!! 思路1:迭代法 一棵二叉树,左右子树分别进队,如果左右子树都为空,则结束遍历,如果左右子树仅一个为空 ...

  5. (3)【全局路径规划】图搜索的路径探索方法--DFS\BFS\DFS-ID、贪心算法、Dijkstra和A*、JPS、.hybird A*、

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 图搜索的方法 0.基础知识介绍 1)图的概念 2)规划配置空间(C- ...

  6. leetcode1466. 重新规划路线(dfs)

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

  7. [Leetcode][第130题][JAVA][被围绕的区域][DFS][BFS]

    [问题描述][中等] [解答思路] 1. 深度优先搜索 使用深度优先搜索实现标记操作.在下面的代码中,我们把标记过的字母 O 修改为字母 A. 复杂度 class Solution {int[] dx ...

  8. 1.5万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现

    简介:本周的强化学习我们来到实践部分.我以我在 GitHub 上开源的项目 PiperLiu / Amazing-Brick-DFS-and-DRL 为对象,从零开始与各位朋友分享:如何用 pytho ...

  9. 【集训】DFS/BFS专训3

    DFS/BFS专训3 文章目录 DFS/BFS专训3 A. 生日蛋糕 B. 埃及分数 C. 最优贸易 D. 关系网络 E. 四色地图 F. 小猫爬山 G. 最大黑区域 H. 引水入城 I. 武士风度的 ...

最新文章

  1. TypeError: __init__() got an unexpected keyword argument ‘ratio‘
  2. sql 2005判断某个表或某个表中的列是否存在
  3. pc端游戏修改器_原神:不要吐槽手机内存了,想要获得最佳游戏体验,PC端最合适...
  4. java list 遍历 remove_JAVA中LISt遍历时如何remove元素?
  5. 神奇的LINQ ---可以通过对象来查询数据
  6. mongodb修改最大连接数
  7. HANA学习笔记1-搭建HANA学习环境
  8. C语言程序运行闪退解决方案
  9. 数据结构实验一 顺序表的插入、删除
  10. pdf转word好用的软件
  11. linux中patch补丁的文件格式和使用
  12. (转)sonicstage 完整删除的方法
  13. Microsoft Word2010 中设置和取消英文首字母大写
  14. u深度重装系统详细教程_u深度u盘启动盘制作工具教程_u深度u盘装系统教程
  15. 用c语言实现基本数据结构(哈希表)
  16. 【Java】Java中的常用工具类(排名前 16)
  17. 磨金石教育分享:43款字体设计工具大集合,超赞!
  18. (转)归纳:数据库设计的六个阶段详解(有这一篇就够了)
  19. 5款神级软件,装机必备,不看后悔
  20. echarts四川省地图+物质流+个性化标注

热门文章

  1. 解决Django 忘记超级管理员密码 重设密码登录教程
  2. sprintf用法详解
  3. 第七章|7.3并发编程|协程
  4. 洛谷 P2084 进制转换
  5. jQuery load() 中文乱码
  6. 文件方式实现完整的英文词频统计实例(9.27)
  7. Tomcat 打开一闪而过
  8. Google C++编程风格指南(一):背景
  9. TCP与UDP的选择--结合QQ来说明
  10. 时间同步绝对是一个大问题