LeetCode 2039. 网络空闲的时刻(BFS)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个有 n 个服务器的计算机网络,服务器编号为 0 到 n - 1 。
同时给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示服务器 ui 和 vi 之间有一条信息线路,在 一秒 内它们之间可以传输 任意 数目的信息。
再给你一个长度为 n 且下标从 0 开始的整数数组 patience 。

题目保证所有服务器都是 相通 的,也就是说一个信息从任意服务器出发,都可以通过这些信息线路直接或间接地到达任何其他服务器。

编号为 0 的服务器是 服务器,其他服务器为 数据 服务器。
每个数据服务器都要向主服务器发送信息,并等待回复。
信息在服务器之间按 最优 线路传输,也就是说每个信息都会以 最少时间 到达主服务器。
主服务器会处理 所有 新到达的信息并 立即 按照每条信息来时的路线 反方向 发送回复信息。

在 0 秒的开始,所有数据服务器都会发送各自需要处理的信息。
从第 1 秒开始,每 一秒最 开始 时,每个数据服务器都会检查它是否收到了主服务器的回复信息(包括新发出信息的回复信息):

  • 如果还没收到任何回复信息,那么该服务器会周期性 重发 信息。
    数据服务器 i 每 patience[i] 秒都会重发一条信息,也就是说,数据服务器 i 在上一次发送信息给主服务器后的 patience[i] 秒 后 会重发一条信息给主服务器。
  • 否则,该数据服务器 不会重发 信息。
    当没有任何信息在线路上传输或者到达某服务器时,该计算机网络变为 空闲 状态。

请返回计算机网络变为 空闲 状态的 最早秒数

示例 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
解释:数据服务器 122 秒初收到回复信息。
从第 3 秒开始,网络变空闲。提示:
n == patience.length
2 <= n <= 10^5
patience[0] == 0
对于 1 <= i < n ,满足 1 <= patience[i] <= 10^5
1 <= edges.length <= min(10^5, n * (n - 1) / 2)
edges[i].length == 2
0 <= ui, vi < n
ui != vi
不会有重边。
每个服务器都直接或间接与别的服务器相连。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/the-time-when-the-network-becomes-idle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 广度优先搜索求解最短的距离,然后计算最后一个能发出去的信息的时间 + 最短距离*2+1 的传递时间
class Solution {
public:int networkBecomesIdle(vector<vector<int>>& edges, vector<int>& patience) {int n = patience.size();vector<vector<int>> g(n);for(auto& e : edges) // 建图{g[e[0]].push_back(e[1]);g[e[1]].push_back(e[0]);}queue<int> q;vector<bool> vis(n, false);vector<int> dis(n);q.push(0);vis[0] = true;int step = 0;while(!q.empty()) // BFS {int size = q.size();while(size--){int x = q.front();dis[x] = step;q.pop();for(auto nx : g[x]){if(!vis[nx]){q.push(nx);vis[nx] = true;}}}step++;}int t = 0;for(int i = 1; i < n; ++i) // 求解最后一个信息的开始时间 + 传递时间,所有的取最大{t = max(t, dis[i]*2+1+(dis[i]*2-1)/patience[i]*patience[i]); }return t;}
};

476 ms 184.4 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 中的占位符本质

占位符本质 1、占位符是相对于String字符串类型而言的。 2、占位符其实就是调用String.Format()方法。把指定的变量拼接到定义好的字符串模板中组成新的字符串。转载于:https://www.cnblogs.com/weber4444/p/4789340.html

java impala_Java实现impala操作kudu

packagecn.itcast.impala.impala;import java.sql.*;public classContants {private static String JDBC_DRIVER"com.cloudera.impala.jdbc41.Driver";private static String CONNECTION_URL"jdbc:impala://node1:21050/default;authnoSasl";//定义数据库连…

java webservice 服务器_java如何写webservice服务端

展开全部Java 中的 Web Service 分为基于 SOAP 的和基于 REST 的两种&#xff0c;下面简单说一个基于 SOAP 的例子。要使用 JDK6u4 之后e69da5e6ba903231313335323631343130323136353331333335313231的版本才能编译通过。先编写一个 Web Service 的接口&#xff1a;WebServiceS…

LeetCode 2040. 两个有序数组的第 K 小乘积(嵌套二分查找)

文章目录1. 题目2. 解题1. 题目 给你两个 从小到大排好序 且下标从 0 开始的整数数组 nums1 和 nums2 以及一个整数 k &#xff0c;请你返回第 k &#xff08;从 1 开始编号&#xff09;小的 nums1[i] * nums2[j] 的乘积&#xff0c;其中 0 < i < nums1.length 且 0 <…

数据库SQL优化大总结之 百万级数据库优化方案(转载)

原文地址&#xff1a;http://www.cnblogs.com/yunfeifei/p/3850440.html 网上关于SQL优化的教程很多&#xff0c;但是比较杂乱。近日有空整理了一下&#xff0c;写出来跟大家分享一下&#xff0c;其中有错误和不足的地方&#xff0c;还请大家纠正补充。 这篇文章我花费了大量的…

java 重写session_关于session的实现:cookie与url重写

本文讨论的语境是java EE servlet。我们都知道session的实现主要两种方式&#xff1a;cookie与url重写&#xff0c;而cookie是首选(默认)的方式&#xff0c;因为各种现代浏览器都默认开通cookie功能&#xff0c;但是每种浏览器也都有允许cookie失效的设置。由于浏览器默认启动c…

LeetCode 2042. 检查句子中的数字是否递增

文章目录1. 题目2. 解题1. 题目 句子是由若干 token 组成的一个列表&#xff0c;token 间用 单个 空格分隔&#xff0c;句子没有前导或尾随空格。 每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 &#xff0c;要么是一个由小写英文字母组成的 单词 。 示例&…

如何在本地搭建svn本地版本库

前提&#xff1a; 安装SVN版本软件 步骤1&#xff1a; rootdebian:svnadmin create /home/svn/back_trunk/rootdebian:cd back_trunk/conf/rootdebian:/home/svn/back_trunk/conf# lsauthz passwd svnserve.conf修改/增加上述三个文件如下&#xff1a; svnserve.conf: anon-acc…

java shiro security_安全框架Shiro和SpringSecurity的比较

两个基本的概念安全实体&#xff1a;系统需要保护的具体对象数据权限&#xff1a;系统相关的功能操作&#xff0c;例如基本的CRUDShiro首先Shiro较之 Spring Security&#xff0c;Shiro在保持强大功能的同时&#xff0c;还在简单性和灵活性方面拥有巨大优势。Shiro是一个强大而…

LeetCode 2043. 简易银行系统

文章目录1. 题目2. 解题1. 题目 你的任务是为一个很受欢迎的银行设计一款程序&#xff0c;以自动化执行所有传入的交易&#xff08;转账&#xff0c;存款和取款&#xff09;。 银行共有 n 个账户&#xff0c;编号从 1 到 n 。每个账号的初始余额存储在一个下标从 0 开始的整数…

LeetCode 2044. 统计按位或能得到最大值的子集数目(状态压缩DP)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff0c;请你找出 nums 子集 按位或 可能得到的 最大值 &#xff0c;并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素&#xff08;或不删除&#xff09;得到&#xff0c;则…

往java里输入坐标值_java.让用户输入x坐标,和y坐标。当用户输入完x坐标(比如200),敲enter,...

展开全部import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.SwingConstants;public class SetLocationFrame exte…

iOS 5.1.1 设备不能安装AdHoc问题版本号

之前苹果更新了审计规范&#xff0c;要求必须支持64通过苹果的审核权限位架构的应用。但运营商表示反馈。使用iOS5.1.1该系统无法安装我们的包Adhoc版本号。认为非常莫名。由于我们在Deployment Target上确实写着5.1.1&#xff0c;全公司也都没人用这个系统了。在运营纠结这个问…

fastapi 请求体 - 多个参数 / 字段Field / 嵌套模型

文章目录1. 混合使用 Path、Query 和请求体参数2. 多个请求体参数3. 请求体中的单一值4. 多个请求体参数和查询参数5. 嵌入单个请求体参数6. 字段7. 嵌套模型7.1 List 字段7.2 子模型作为类型8. 特殊类型校验9. 带有一组子模型的属性10. 任意 dict 构成的请求体learn from http…

g++: command not found的解决

G没有装或却没有更新以下方法都可以试试&#xff1a;centos&#xff1a;yum -y update gccyum -y install gcc gcc-cubuntu&#xff1a;apt-get update gccapt-get install g转载于:https://www.cnblogs.com/babosa/p/9217963.html

java ltpa_LTPA Cookie原理

1. 什么是LTPA?Lightweight Third-Party Authentication (LTPA)是IBM Websphere和Domino产品中使用单点登录技术。当服务器配置好LTPA认证方式&#xff0c;用户通过浏览器成功登录后&#xff0c;服务器会自动发送一个session cookie给浏览器&#xff1b;此cookie中包含一个LTP…

fastapi 模式的额外信息,示例 / Cookie参数 / Header参数

文章目录1. Pydantic schema_extra2. Field 的附加参数3. Body 额外参数4. Cookie 参数5. Header 参数5.1 重复的 headerslearn from https://fastapi.tiangolo.com/zh/tutorial/schema-extra-example/ 添加一个将在文档中显示的 example 1. Pydantic schema_extra from typ…

Android(java)学习笔记171:服务(service)之绑定服务调用服务里面的方法

1.绑定服务调用服务里面的方法&#xff0c;图解&#xff1a; 步骤&#xff1a; &#xff08;1&#xff09;在Activity代码里面绑定 bindService&#xff08;&#xff09;&#xff0c;以bind的方式开启服务 &#xff1b; bindService&#xff08;intent, new MyConn(), BIND_AUT…

java 动态队列_RabbitMq之动态修改队列参数

RabbitMq不支持修改已经存在的队列和交换机参数&#xff0c;可以通过创建失败&#xff0c;捕获异常信息&#xff0c;然后删除原队列或交换机&#xff0c;然后重新创建&#xff0c;以达到修改参数的功能。package com.sky.study.delete;import java.io.IOException;import java.…

LeetCode 1909. 删除一个元素使数组严格递增

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums &#xff0c;如果 恰好 删除 一个 元素后&#xff0c;数组 严格递增 &#xff0c;那么请你返回 true &#xff0c;否则返回 false 。 如果数组本身已经是严格递增的&#xff0c;请你也返回 true 。 数组…