5888. 網絡空閑的時刻

5888. 網絡空閑的時刻

給你一個有 n?個服務器的計算機網絡,服務器編號為?0?到?n - 1?。同時給你一個二維整數數組?edges?,其中?edges[i] = [ui, vi]?表示服務器?ui 和?vi?之間有一條信息線路,在?一秒?內它們之間可以傳輸?任意?數目的信息。再給你一個長度為 n?且下標從?0?開始的整數數組?patience?。

題目保證所有服務器都是 相通?的,也就是說一個信息從任意服務器出發,都可以通過這些信息線路直接或間接地到達任何其他服務器。

編號為 0?的服務器是 主?服務器,其他服務器為 數據?服務器。每個數據服務器都要向主服務器發送信息,并等待回復。信息在服務器之間按 最優?線路傳輸,也就是說每個信息都會以 最少時間?到達主服務器。主服務器會處理 所有?新到達的信息并 立即?按照每條信息來時的路線 反方向 發送回復信息。

在 0?秒的開始,所有數據服務器都會發送各自需要處理的信息。從第 1?秒開始,每?一秒最 開始?時,每個數據服務器都會檢查它是否收到了主服務器的回復信息(包括新發出信息的回復信息):

  • 如果還沒收到任何回復信息,那么該服務器會周期性?重發?信息。數據服務器?i?每?patience[i]?秒都會重發一條信息,也就是說,數據服務器?i?在上一次發送信息給主服務器后的 patience[i]?秒 后?會重發一條信息給主服務器。
  • 否則,該數據服務器?不會重發?信息。
    當沒有任何信息在線路上傳輸或者到達某服務器時,該計算機網絡變為 空閑?狀態。

請返回計算機網絡變為 空閑?狀態的?最早秒數?。
image.png

示例 1:輸入:edges = [[0,1],[1,2]], patience = [0,2,1]
輸出:8
解釋:
0 秒最開始時,
- 數據服務器 1 給主服務器發出信息(用 1A 表示)。
- 數據服務器 2 給主服務器發出信息(用 2A 表示)。1 秒時,
- 信息 1A 到達主服務器,主服務器立刻處理信息 1A 并發出 1A 的回復信息。
- 數據服務器 1 還沒收到任何回復。距離上次發出信息過去了 1 秒(1 < patience[1] = 2),所以不會重發信息。
- 數據服務器 2 還沒收到任何回復。距離上次發出信息過去了 1 秒(1 == patience[2] = 1),所以它重發一條信息(用 2B 表示)。2 秒時,
- 回復信息 1A 到達服務器 1 ,服務器 1 不會再重發信息。
- 信息 2A 到達主服務器,主服務器立刻處理信息 2A 并發出 2A 的回復信息。
- 服務器 2 重發一條信息(用 2C 表示)。
...
4 秒時,
- 回復信息 2A 到達服務器 2 ,服務器 2 不會再重發信息。
...
7 秒時,回復信息 2D 到達服務器 2 。從第 8 秒開始,不再有任何信息在服務器之間傳輸,也不再有信息到達服務器。
所以第 8 秒是網絡變空閑的最早時刻。
示例 2:輸入:edges = [[0,1],[0,2],[1,2]], patience = [0,10,10]
輸出:3
解釋:數據服務器 1 和 2 第 2 秒初收到回復信息。
從第 3 秒開始,網絡變空閑。

解題思路

  1. 先使用廣度優先搜索,計算出每個節點和0號節點之前的最短路徑

  2. 因為數據服務器 i 在上一次發送信息給主服務器后的 patience[i] 秒 后 會重發一條信息給主服務器,因此可以推知,當第一條發送的信息收到回復以后,將不再繼續發送消息,所以我們只需要計算在第一條回復消息到達之前,我們發送了多少條重發信息給0號節點,計算出最晚重發的那條消息收到回復的時間,就是該節點變為空閑的時間,計算出所有節點的這個時間,比較出最大的那個時間,就是最早空閑時間

代碼

class Solution {public int networkBecomesIdle(int[][] edges, int[] patience) {int n=patience.length;Map<Integer,List<Integer>>map=new HashMap<>();for (int[] edge : edges) {if (!map.containsKey(edge[0]))map.put(edge[0],new ArrayList<>());map.get(edge[0]).add(edge[1]);if (!map.containsKey(edge[1]))map.put(edge[1],new ArrayList<>());map.get(edge[1]).add(edge[0]);}Map<Integer,Integer> dist=new HashMap<>();dist.put(0,0);Queue<Integer> queue=new LinkedList<>();queue.add(0);int d=1;while (!queue.isEmpty()){int size=queue.size();for (int i = 0; i < size; i++) {int cur=queue.poll();for (Integer next : map.get(cur)) {if (dist.containsKey(next))continue;dist.put(next,d);queue.add(next);}}d++;}int max=0;for (int i = 1; i < patience.length; i++) {int cost=2*dist.get(i);int late=(cost-1)/patience[i];max=Math.max(late*patience[i]+cost,max);}return max+1;}
}

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

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

相關文章

django框架預備知識

內容&#xff1a; 1.web預備知識 2.django介紹 3.web框架的本質及分類 4.django安裝與基本設置 1.web預備知識 HTTP協議&#xff1a;https://www.cnblogs.com/wyb666/p/9383077.html 關于web的本質&#xff1a;http://www.cnblogs.com/wyb666/p/9034042.html 如何自定義web框架…

現實世界 機器學習_公司溝通分析簡介現實世界的機器學習方法

現實世界 機器學習In my previous posts I covered analytical subjects from a scientific point of view, rather than an applied real world problem. For this reason, this article aims at approaching an analytical idea from a managerial point of view, rather tha…

拷貝構造函數和賦值函數

1、拷貝構造函數&#xff1a;用一個已經有的對象構造一個新的對象。 CA&#xff08;const CA & c &#xff09;函數的名稱必須和類名稱相一致&#xff0c;它的唯一的一個參數是本類型的一個引用變量&#xff0c;該參數是const 類型&#xff0c;不可變。 拷貝構造函數什么時…

[bzoj3036]綠豆蛙的歸宿

題目大意&#xff1a;給定 $DAG$ 帶邊權連通圖&#xff0c;保證所有點都能到達終點 $n$&#xff0c;每個點等概率沿邊走&#xff0c;求起點 $1$ 到終點 $n$ 的期望長度。 題解&#xff1a;拓撲&#xff0c;然后倒著$DP$就可以了 卡點&#xff1a;無 C Code&#xff1a; #includ…

5902. 檢查句子中的數字是否遞增

5902. 檢查句子中的數字是否遞增 句子是由若干 token 組成的一個列表&#xff0c;token 間用 單個 空格分隔&#xff0c;句子沒有前導或尾隨空格。每個 token 要么是一個由數字 0-9 組成的不含前導零的 正整數 &#xff0c;要么是一個由小寫英文字母組成的 單詞 。 示例&…

蒜頭君吃桃

蒜頭君買了一堆桃子不知道個數&#xff0c;第一天吃了一半的桃子&#xff0c;還不過癮&#xff0c;有多吃了一個。以后他每天吃剩下的桃子的一半還多一個&#xff0c;到 nn 天只剩下一個桃子了。蒜頭君想知道一開始買了多少桃子。 輸入格式 輸入一個整數 n(2≤n≤60)&#xff0…

Chrome keyboard shortcuts

2019獨角獸企業重金招聘Python工程師標準>>> Chrome keyboard shortcuts https://support.google.com/chrome/answer/157179?hlen 轉載于:https://my.oschina.net/qwfys200/blog/1927456

數據中心細節_當細節很重要時數據不平衡

數據中心細節定義不平衡數據 (Definition Imbalanced Data) When we speak of imbalanced data, what we mean is that at least one class is underrepresented. For example, when considering the problem of building a classifier, let’s call it the Idealisstic-Voter.…

辛普森悖論_所謂的辛普森悖論

辛普森悖論We all know the Simpsons family from Disneyland, but have you heard about the Simpson’s Paradox from statistic theory? This article will illustrate the definition of Simpson’s Paradox with an example, and show you how can it harm your statisti…

查看NVIDIA使用率工具目錄

2019獨角獸企業重金招聘Python工程師標準>>> C:\Program Files\NVIDIA Corporation\Display.NvContainer\NVDisplay.Container.exe 轉載于:https://my.oschina.net/u/2430809/blog/1927560

2043. 簡易銀行系統

2043. 簡易銀行系統 你的任務是為一個很受歡迎的銀行設計一款程序&#xff0c;以自動化執行所有傳入的交易&#xff08;轉賬&#xff0c;存款和取款&#xff09;。銀行共有 n 個賬戶&#xff0c;編號從 1 到 n 。每個賬號的初始余額存儲在一個下標從 0 開始的整數數組 balance…

余弦相似度和歐氏距離_歐氏距離和余弦相似度

余弦相似度和歐氏距離Photo by Markus Winkler on UnsplashMarkus Winkler在Unsplash上拍攝的照片 This is a quick and straight to the point introduction to Euclidean distance and cosine similarity with a focus on NLP.這是對歐氏距離和余弦相似度的快速而直接的介紹&…

bzoj2152 聰聰可可

題目描述 聰聰和可可是兄弟倆&#xff0c;他們倆經常為了一些瑣事打起來&#xff0c;例如家中只剩下最后一根冰棍而兩人都想吃、兩個人都想玩兒電腦&#xff08;可是他們家只有一臺電腦&#xff09;……遇到這種問題&#xff0c;一般情況下石頭剪刀布就好了&#xff0c;可是他們…

七、 面向對象(二)

匿名類對象 創建的類的對象是匿名的。當我們只需要一次調用類的對象時&#xff0c;我們就可以考慮使用匿名的方式創建類的對象。特點是創建的匿名類的對象只能夠調用一次&#xff01; package day007;//圓的面積 class circle {double radius;public double getArea() {// TODO…

機器學習 客戶流失_通過機器學習預測流失

機器學習 客戶流失介紹 (Introduction) This article is part of a project for Udacity “Become a Data Scientist Nano Degree”. The Jupyter Notebook with the code for this project can be downloaded from GitHub.本文是Udacity“成為數據科學家納米學位”項目的一部分…

2044. 統計按位或能得到最大值的子集數目

2044. 統計按位或能得到最大值的子集數目 給你一個整數數組 nums &#xff0c;請你找出 nums 子集 按位或 可能得到的 最大值 &#xff0c;并返回按位或能得到最大值的 不同非空子集的數目 。 如果數組 a 可以由數組 b 刪除一些元素&#xff08;或不刪除&#xff09;得到&…

redis系列:分布式鎖

1 介紹 這篇博文講介紹如何一步步構建一個基于Redis的分布式鎖。會從最原始的版本開始&#xff0c;然后根據問題進行調整&#xff0c;最后完成一個較為合理的分布式鎖。 本篇文章會將分布式鎖的實現分為兩部分&#xff0c;一個是單機環境&#xff0c;另一個是集群環境下的Redis…

Qt中的坐標系統

轉載&#xff1a;原野追逐 Qt使用統一的坐標系統來定位窗口部件的位置和大小。 以屏幕的左上角為原點即(0, 0)點&#xff0c;從左向右為x軸正向&#xff0c;從上向下為y軸正向&#xff0c;這整個屏幕的坐標系統就用來定位頂層窗口&#xff1b; 此外&#xff0c;窗口內部也有自己…

預測股票價格 模型_建立有馬模型來預測股票價格

預測股票價格 模型前言 (Preface) If you are reading this, it’s most likely because you love to solve puzzles. I’m a very competitive person by nature. The Mt. Everest of puzzles, in my opinion, is trying to find excess returns through active trading in th…

Python 模塊 timedatetime

time & datetime 模塊 在平常的代碼中&#xff0c;我們常常需要與時間打交道。在Python中&#xff0c;與時間處理有關的模塊就包括&#xff1a;time&#xff0c;datetime,calendar(很少用&#xff0c;不講)&#xff0c;下面分別來介紹。 在開始之前&#xff0c;首先要說明幾…