leetcode743. 網絡延遲時間(迪杰斯特拉算法)

有 N 個網絡節點,標記為 1 到 N。

給定一個列表 times,表示信號經過有向邊的傳遞時間。 times[i] = (u, v, w),其中 u 是源節點,v 是目標節點, w 是一個信號從源節點傳遞到目標節點的時間。
現在,我們從某個節點 K 發出一個信號。需要多久才能使所有節點都收到信號?如果不能使所有節點收到信號,返回 -1。

示例:

輸入:times = [[2,1,1],[2,3,1],[3,4,1]], N = 4, K = 2
輸出:2

代碼

class Solution {HashMap<Integer, List<int[]>> map;HashMap<Integer,Integer> dist;public int networkDelayTime(int[][] times, int N, int K) {dist=new HashMap<>();map=new HashMap<>();boolean[] check=new boolean[N+1];for(int[] time:times)//構造鄰接表{    if(!map.containsKey(time[0]))map.put(time[0], new ArrayList<int[]>());map.get(time[0]).add(new int[]{time[1],time[2]});}for(int i=1;i<=N;i++)dist.put(i,Integer.MAX_VALUE); dist.put(K,0);while (true){int curDist=Integer.MAX_VALUE;int curNode=-1;for(int i=1;i<=N;i++)if(!check[i]&&dist.get(i)<curDist)//找出當前距離起點的最近的節點{curDist=dist.get(i);curNode=i;}if(curNode<0) break;//遍歷完了所有節點check[curNode]=true;//當前節點已經被訪問if(map.containsKey(curNode)){for(int[] next:map.get(curNode))//更新鄰接點與起點的最小距離dist.put(next[0], Math.min(next[1]+dist.get(curNode),dist.get(next[0])));}}int cnt=0;for(int c:dist.values())//遍歷所有的節點到起點的距離{   if(c==Integer.MAX_VALUE) return -1;cnt= Math.max(c,cnt);}return cnt;}
}

堆實現代碼

    HashMap<Integer, List<int[]>> map;public int networkDelayTime(int[][] times, int N, int K) {HashMap<Integer,Integer> dist=new HashMap<>();map=new HashMap<>();boolean[] check=new boolean[N+1];for(int[] time:times)//構造鄰接表{    if(!map.containsKey(time[0]))map.put(time[0], new ArrayList<int[]>());map.get(time[0]).add(new int[]{time[1],time[2]});}PriorityQueue<int[]> priorityQueue=new PriorityQueue<>(((o1, o2) -> o1[0]-o2[0]));//按距離從小到大priorityQueue.offer(new int[]{0,K});//將起點加入優先隊列while (!priorityQueue.isEmpty()){int[] temp=priorityQueue.poll();int d=temp[0],node=temp[1];if(dist.containsKey(node)) continue;//已經確定了距離的不再訪問dist.put(node,d);if(map.containsKey(node))for(int[] next:map.get(node))//將鄰接點到起點的距離加入優先隊列{ if(!dist.containsKey(next[0]));{priorityQueue.offer(new int[]{d+next[1],next[0]});}}}if(dist.size()!=N) return -1;int cnt=0;for(int c:dist.values()){cnt= Math.max(c,cnt);}return cnt;}

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

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

相關文章

在線python視頻教程_【好程序員】2019 Python全套視頻教程2

2019千鋒好程序員全新Python教程&#xff0c;深入淺出的講解Python語言的基礎語法&#xff0c;注重基本編程能力訓練&#xff0c;深入解析面向對象思想&#xff0c;數據類型和變量、運算符、流程控制、函數、面向對象、模塊和包、生成器和迭代器。教程列表&#xff1a;千鋒Pyth…

洛谷——P1546 最短網絡 Agri-Net

P1546 最短網絡 Agri-Net 題目背景 農民約翰被選為他們鎮的鎮長&#xff01;他其中一個競選承諾就是在鎮上建立起互聯網&#xff0c;并連接到所有的農場。當然&#xff0c;他需要你的幫助。 題目描述 約翰已經給他的農場安排了一條高速的網絡線路&#xff0c;他想把這條線路共享…

漫談單點登錄(SSO)(淘寶天貓)(轉載)

1. 摘要 &#xff08; 注意&#xff1a;請仔細看下摘要&#xff0c;留心此文是否是您的菜&#xff0c;若浪費寶貴時間&#xff0c;深感歉意&#xff01;&#xff01;&#xff01;&#xff09; SSO這一概念由來已久&#xff0c;網絡上對應不同場景的成熟SSO解決方案比比皆是&…

mysql mdl 鎖_MySQL MDL鎖

MDL全稱為metadata lock&#xff0c;即元數據鎖。MDL鎖主要作用是維護表元數據的數據一致性&#xff0c;在表上有活動事務(顯式或隱式)的時候&#xff0c;不可以對元數據進行寫入操作。因此從MySQL5.5版本開始引入了MDL鎖&#xff0c;來保護表的元數據信息&#xff0c;用于解決…

Card Game Again CodeForces - 818E (雙指針)

大意: 給定序列, 求多少個區間積被k整除. 整除信息滿足單調性, 顯然雙指針. 具體實現只需要考慮k的素數向量, 對每一維維護個指針即可. 這題看了下cf其他人的做法, 發現可以直接暴力, 若當前的前綴積模k為0, 暴力向前求出第一個后綴積為0的位置即可, 復雜度是$O(n)$的并且相當好…

pacf和acf_如何通過Wordpress API,ACF和Express.js使Wordpress更加令人興奮

pacf和acfby Tyler Jackson泰勒杰克遜(Tyler Jackson) 如何通過Wordpress API&#xff0c;ACF和Express.js使Wordpress更加令人興奮 (How to make Wordpress more exciting with the Wordpress API, ACF, & Express.js) I’ve been working with Wordpress since it’s pr…

python運行出現數據錯誤_Python運行出錯情況

1、錯誤內容&#xff1a;You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory str). It is highly recommended that you instead just switch your application to Unicode strings.錯誤描述&#x…

leetcode95. 不同的二叉搜索樹 II(遞歸)

給定一個整數 n&#xff0c;生成所有由 1 ... n 為節點所組成的 二叉搜索樹 。示例&#xff1a;輸入&#xff1a;3 輸出&#xff1a; [[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3] ] 解釋&#xff1a; 以上的輸出對應以下 5 種不同結構的二叉搜索樹…

數據結構探險系列—棧篇-學習筆記

數據結構探險—棧篇 什么是棧&#xff1f; 古代棧就是牲口棚的意思。 棧是一種機制&#xff1a;后進先出 LIFO&#xff08;last in first out&#xff09; 電梯 棧要素空棧。棧底&#xff0c;棧頂。沒有元素的時候&#xff0c;棧頂和棧底指向同一個元素&#xff0c;如果加入新元…

MYSQL遠程登錄權限設置 ,可以讓Navicat遠程連接服務器的數據庫

Mysql默認關閉遠程登錄權限&#xff0c;如下操作允許用戶在任意地點登錄&#xff1a;1. 進入mysql&#xff0c;GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY WITH GRANT OPTION;IDENTIFIED BY后跟的是密碼&#xff0c;可設為空。2. FLUSH privileges; 更新Mysql為了安…

time series 時間序列 | fractional factorial design 部分要因試驗設計

作業&#xff1a; 1) A plot of data from a time series, which shows a cyclical pattern – please show a time series plot and identify the length of the major cycle. 2) Data from a full factorial or fractional factorial experiment with at least 2 factors –…

如何在Go中編寫防彈代碼:不會失敗的服務器工作流程

by Tal Kol通過塔爾科爾 如何在Go中編寫防彈代碼&#xff1a;不會失敗的服務器工作流程 (How to write bulletproof code in Go: a workflow for servers that can’t fail) From time to time you may find yourself facing a daunting task: building a server that really …

越獄第一至五季/全集迅雷下載

越獄 第一季 Prison Break Season 1 (2005) 本季看點&#xff1a;邁克爾斯科菲爾德是一頭陷于絕境欲拼死一搏的怒獅——他的哥哥林肯巴羅斯被認定犯有謀殺罪被投入了福克斯河監獄的死囚牢。雖然所有的證據都指出林肯就是兇手&#xff0c;邁克爾堅信兄長是無辜的。林肯的死刑執行…

leetcode面試題 16.19. 水域大小(深度優先搜索)

你有一個用于表示一片土地的整數矩陣land&#xff0c;該矩陣中每個點的值代表對應地點的海拔高度。若值為0則表示水域。由垂直、水平或對角連接的水域為池塘。池塘的大小是指相連接的水域的個數。編寫一個方法來計算矩陣中所有池塘的大小&#xff0c;返回值需要從小到大排序。 …

java -jar 默認參數_JAVA入門學習指南,建議收藏

如果你不懂Java 并且想認真學習接觸了解一下Java的語法&#xff0c;建議把這篇文章收藏了&#xff0c;多看幾遍&#xff0c;應該可以初步掌握Java 大部分基礎的語法 。 讓我們出發吧&#xff01;ps:本文有點長&#xff0c;耐心閱讀 。〇&#xff0c;編程環境工程項目推薦使用ID…

【RabbitMQ】 WorkQueues

消息分發 在【RabbitMQ】 HelloWorld中我們寫了發送/接收消息的程序。這次我們將創建一個Work Queue用來在多個消費者之間分配耗時任務。 Work Queues&#xff08;又稱為&#xff1a;Task Queues&#xff09;的主要思想是&#xff1a;盡可能的減少執行資源密集型任務時的等待時…

python matplotlib庫安裝出錯_使用pip install Matplotlib時出現內存錯誤

我使用的是Python2.7&#xff0c;如果我試圖安裝Matplotlib&#xff0c;如果我使用“pip install Matplotlib”&#xff0c;就會出現這個錯誤Exception:Traceback (most recent call last):File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line …

笑看職場什么程序員才搶手,什么樣的程序員漲薪多?

?程序員&#xff0c;怎么才算合格&#xff0c;不好說吧&#xff1b;他就像銷售一樣&#xff0c;一名銷售員&#xff0c;比如網絡銷售賣茶葉&#xff0c;他賣茶葉很厲害呀&#xff0c;可是你讓他去銷售房地產&#xff0c;就算他有點銷售的基礎&#xff0c;也要重新去學怎么銷售…

Android畫布Canvas裁剪clipRect,Kotlin

Android畫布Canvas裁剪clipRect&#xff0c;Kotlin private fun mydraw() {val originBmp BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp Bitmap.createBitmap(originBmp.width, originBmp.height, Bitmap.Config.A…

調查|73%的公司正使用存在漏洞的超期服役設備

本文講的是調查&#xff5c;73%的公司正使用存在漏洞的超期服役設備&#xff0c;一份新近的調查覆蓋了北美350家機構的212000臺思科設備。結果顯示&#xff0c;73%的企業正在使用存在漏洞、超期服役的網絡設備。該數字在上一年僅為60%。 Softchoice公司思科部門業務主管大衛魏格…