LeetCode 2039 网络空闲的时刻[bfs 数学] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 2039 网络空闲的时刻[bfs 数学] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
一道变形的广度优先题目,本质上还是使用BFS的模板,只不过需要对题目进行分析,对于每个访问到的点,分别讨论其未到重发时间的情况和已经重发过的情况,所需时间都可以用该式表示patience[next] * ((2 * dis - 1) / patience[next]) + 2 * dis + 1
,广度优先遍历直到队列为0,获取最大的time即可,代码如下:
class Solution
public:
int networkBecomesIdle(vector<vector<int>>& edges, vector<int>& patience)
int n = patience.size();
vector<vector<int>> adj(n);
// 初始化距离矩阵
for(auto& edge : edges)
adj[edge[0]].push_back(edge[1]);
adj[edge[1]].push_back(edge[0]);
vector<bool> visited(n, false);
queue<int> q;
q.push(0);
visited[0] = true;
int ans = 0;
int dis = 1;
while(!q.empty())
int size = q.size();
for(int i = 0; i < size; i ++)
int node = q.front();
q.pop();
for(auto& next : adj[node])
if(visited[next]) continue;
int time = patience[next] * ((2 * dis - 1) / patience[next]) + 2 * dis + 1;
ans = max(ans, time);
q.push(next);
visited[next] = true;
dis ++;
return ans;
;
以上是关于LeetCode 2039 网络空闲的时刻[bfs 数学] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ 2039 [2009国家集训队]employ人员雇佣 网络流
LeetCode 297. 二叉树的序列化与反序列化(bfs,二叉树,Java)