每天一道leetcode:1466. 重新規劃路線(圖論中等廣度優先遍歷)

今日份題目:

n 座城市,從 0n-1 編號,其間共有 n-1 條路線。因此,要想在兩座不同城市之間旅行只有唯一一條路線可供選擇(路線網形成一顆樹)。去年,交通運輸部決定重新規劃路線,以改變交通擁堵的狀況。

路線用 connections 表示,其中 connections[i] = [a, b] 表示從城市 ab 的一條有向路線。

今年,城市 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]

題目思路

這道題我們使用bfs廣度優先遍歷。拿例1為例,我們只需要從0開始遍歷,由于路徑單向通行,故與這些點的連線都需要反向,除此之外,下邊那條邊直接找是無法從0走過去的,但還有條路需要反向,這時,我們引入反向圖,在正向bfs的同時對反向圖同樣bfs,放入同一個隊列中,這樣就可以保證圖中所有不滿足條件的邊都被記錄下來了。

所謂反向圖,就是將圖中所有的路徑反向,(i,j)處的值與(j,i)處的值交換。

代碼

class Solution 
{
public:int minReorder(int n, vector<vector<int>>& connections) {vector<vector<int> > graph(n);//正向圖vector<vector<int> > antigraph(n);//反向圖for(auto& c:connections) {graph[c[0]].push_back(c[1]);//記錄正向圖antigraph[c[1]].push_back(c[0]);//記錄反向圖}int ans=0;int visited[100000]={0};visited[0]=1;queue<int> p;p.push(0);//bfswhile(!p.empty()) {//獲取當前點信息int i=p.front();p.pop();//正向遍歷搜尋結果for(int j=0;j<graph[i].size();j++){if(visited[graph[i][j]]==0) {visited[graph[i][j]]=1;//標記為已到達過ans++;//0向外能到達的點的路徑就是需要反向的路徑p.push(graph[i][j]);}}//反向遍歷搜尋結果for(int j=0;j<antigraph[i].size();j++){if(visited[antigraph[i][j]]==0) {visited[antigraph[i][j]]=1;//標記為已到達過p.push(antigraph[i][j]);} }            }return ans;}
};

提交結果

?歡迎大家在評論區討論,如有不懂的代碼部分,歡迎在評論區留言!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42926.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42926.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42926.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCV-Python中的圖像處理-視頻分析

OpenCV-Python中的圖像處理-視頻分析 視頻分析Meanshift算法Camshift算法光流Lucas-Kanade Optical FlowDense Optical Flow 視頻分析 學習使用 Meanshift 和 Camshift 算法在視頻中找到并跟蹤目標對象: Meanshift算法 Meanshift 算法的基本原理是和很簡單的。假設我們有一堆…

Failed to init API, possibly an invalid tessdata path: ./ ubuntu

1、問題描述 Failed to init API, possibly an invalid tessdata path: ./2、解決方案&#xff1a; 添加“TESSDATA_PREFIX”到系統環境變量中&#xff0c;值為testdata的父路徑&#xff08;一般就是 Tesseract-OCR 的安裝路徑&#xff09;亦可解決。在~/.bashrc中添加 expo…

【學習日記】【FreeRTOS】空閑任務與阻塞延時

寫在前面 本文是基于野火 RTOS 教程對空閑任務和阻塞延時的詳解。 一、什么是任務中的阻塞延時 說到阻塞延時&#xff0c;筆者的第一反應就是在單片機的 while 循環中&#xff0c;使用一個 for 循環不斷遞減一個大數&#xff0c;通過 CPU 不斷執行一條指令的耗時進行延時。這…

python優雅地爬蟲!

背景 我需要獲得新聞&#xff0c;然后tts&#xff0c;在每天上班的路上可以聽一下。具體的方案后期我也會做一次分享。先看我喜歡的萬能的老路&#xff1a;獲得html內容-> python的工具庫解析&#xff0c;獲得元素中的內容&#xff0c;完成。 好家伙&#xff0c;我知道我爬…

視頻云存儲/安防監控/視頻匯聚EasyCVR平臺新增設備經緯度選取

視頻云存儲/安防監控EasyCVR視頻匯聚平臺基于云邊端智能協同&#xff0c;支持海量視頻的輕量化接入與匯聚、轉碼與處理、全網智能分發、視頻集中存儲等。音視頻流媒體視頻平臺EasyCVR拓展性強&#xff0c;視頻能力豐富&#xff0c;具體可實現視頻監控直播、視頻輪播、視頻錄像、…

公網遠程連接Redis數據庫「內網穿透」

文章目錄 1. Linux(centos8)安裝redis數據庫2. 配置redis數據庫3. 內網穿透3.1 安裝cpolar內網穿透3.2 創建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一個固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址連接 前言 潔潔的個人主頁 我就問你有沒有發揮&#xff0…

藍牙資訊|蘋果Apple Watch可手勢操控Mac和Apple TV等設備

根據美國商標和專利局&#xff08;USPTO&#xff09;公示的清單&#xff0c;蘋果公司近日獲得了一項技術專利&#xff0c;概述了未來的 Apple Watch 手表&#xff0c;使用手勢等操控 Mac 和 Apple TV 等設備。 該專利描述未來 Apple Watch 可以交互實現編輯圖像、繪圖、處理文…

02:STM32--EXTI外部中斷

目錄 一:中斷 1:簡歷 2:AFIO 3:EXTI ?編輯 4:NVIC基本結構 5:使用步驟 二:中斷的應用 A:對外式紅外傳感計數器 1:連接圖?編輯 2:函數介紹 3:硬件介紹 4:計數代碼 B;旋轉編碼計數器 1:連接圖 2:硬件介紹 3:旋轉編碼器代碼: 一:中斷 1:簡歷 中斷&#xff1a;在主程…

Flutter 測試小結

Flutter 項目結構 pubspec.yaml 類似于 RN 的 package.json&#xff0c;該文件分別在最外層及 example 中有&#xff0c;更新該文件后&#xff0c;需要執行的 Pub get lib 目錄下的 dart 文件為 Flutter 插件封裝后的接口源碼&#xff0c;方便在其他 dart 文件中調用 example 目…

python通過S7協議讀取西門子200smart數據

發現網上很多關于python通過s7協議控制200smart的代碼都失敗&#xff0c;我猜應該是版本的問題。自己搗鼓了半天&#xff0c;終于測試成功 from snap7 import util,clientmy_plc client.Client() #建立一個客戶端對象 my_plc.set_connection_type(3) #如果是200smart,必須有此…

Flink流批一體計算(14):PyFlink Tabel API之SQL查詢

舉個例子 查詢 source 表&#xff0c;同時執行計算 # 通過 Table API 創建一張表&#xff1a; source_table table_env.from_path("datagen") # 或者通過 SQL 查詢語句創建一張表&#xff1a; source_table table_env.sql_query("SELECT * FROM datagen&quo…

QT實現天氣預報

1. MainWindow類設計的成員變量和方法 public: MainWindow(QWidget* parent nullptr); ~MainWindow(); protected: 形成文本菜單來用來右鍵關閉窗口 void contextMenuEvent(QContextMenuEvent* event); 鼠標被點擊之后此事件被調用 void mousePressEvent(QMouseEv…

Leetcode每日一題:1444. 切披薩的方案數(2023.8.17 C++)

目錄 1444. 切披薩的方案數 題目描述&#xff1a; 實現代碼與解析&#xff1a; 二維后綴和 動態規劃 原理思路&#xff1a; 1444. 切披薩的方案數 題目描述&#xff1a; 給你一個 rows x cols 大小的矩形披薩和一個整數 k &#xff0c;矩形包含兩種字符&#xff1a; A …

Spring(三):Spring中Bean的生命周期和作用域

前言 在 Spring 中&#xff0c;那些組成應用程序的主體及由 Spring IOC 容器所管理的對象&#xff0c;被稱之為 bean。簡單地講&#xff0c;bean 就是由 IOC 容器初始化、裝配及管理的對象&#xff0c;除此之外&#xff0c;bean 就與應用程序中的其他對象沒有什么區別了。而 b…

Oracle數據庫運維大全

以下是一些常見的Oracle數據庫運維任務和對應的語句腳本示例&#xff1a; 檢查數據庫實例狀態&#xff1a; SELECT instance_name, status, startup_time FROM v$instance; 查看數據庫版本和補丁級別&#xff1a; SELECT * FROM v$version; SELECT patch_id, action, status …

LeetCode 熱題 100(四):48. 旋轉圖像、240. 搜索二維矩陣 II、234. 回文鏈表

一.48. 旋轉圖像 題目要求&#xff1a;就是一個順時針的旋轉過程。 思路&#xff1a;觀察矩陣&#xff0c;得出翻轉前第i行的第J個元素 等于 翻轉后倒數第i列的第J個元素&#xff0c;舉例說明&#xff0c;第1行第2個元素為“2”&#xff0c;翻轉后到了 倒數第1列的第2個元素…

MAC環境,在IDEA執行報錯java: -source 1.5 中不支持 diamond 運算符

Error:(41, 51) java: -source 1.5 中不支持 diamond 運算符 (請使用 -source 7 或更高版本以啟用 diamond 運算符) 進入設置 修改java版本 pom文件中加入 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin&l…

vue項目預覽pdf功能(解決動態文字無法顯示的問題)

最近&#xff0c;因為公司項目需要預覽pdf的功能&#xff0c;開始的時候找了市面上的一些pdf插件&#xff0c;都能用&#xff0c;但是&#xff0c;后面因為pdf變成了需要根據內容進行變化的&#xff0c;然后&#xff0c;就出現了需要動態生成的文字不顯示了。換了好多好多的插件…

Flink安裝與使用

1.安裝準備工作 下載flink Apache Flink: 下載 解壓 [dodahost166 bigdata]$ tar -zxvf flink-1.12.0-bin-scala_2.11.tgz 2.Flinnk的standalone模式安裝 2.1修改配置文件并啟動 修改&#xff0c;好像使用默認的就可以了 [dodahost166 conf]$ more flink-conf.yaml 啟動 …

【辦公自動化】使用Python批量生成PPT版榮譽證書

&#x1f935;?♂? 個人主頁&#xff1a;艾派森的個人主頁 ?&#x1f3fb;作者簡介&#xff1a;Python學習者 &#x1f40b; 希望大家多多支持&#xff0c;我們一起進步&#xff01;&#x1f604; 如果文章對你有幫助的話&#xff0c; 歡迎評論 &#x1f4ac;點贊&#x1f4…