leetcode-每日一题2022.3.20 网络空闲的时刻
作者:互联网
题目
思路 建图+BFS
先根据边edge建图,计算每个服务器到0服务器的最短距离。如果来回传送时间小于等于等待重传时间,在这个服务器上的活动停止时间就是来回传送时间。如果来回传送时间大于等待重传时间,在这个服务器上的活动停止时间就是(di - 1)/ t * t + di。
代码
class Solution {
public:
int networkBecomesIdle(vector<vector<int>>& edges, vector<int>& patience) {
int n = patience.size();
vector<vector<int>> g(n);
for(auto edge : edges){
g[edge[0]].push_back(edge[1]);
g[edge[1]].push_back(edge[0]);
}
vector<bool> vis(n, false);
queue<int> q;
q.push(0);
vis[0] = true;
int ans = 0, dist = 1;
while(!q.empty()){
int len = q.size();
for(int i = 0; i < len; i++){
int cur = q.front();
q.pop();
for(int v : g[cur]){
if(vis[v]) continue;
vis[v] = true;
q.push(v);
int di = 2 * dist, t = patience[v];
if(di <= t) ans = max(ans, di);
else ans = max(ans, (di - 1) / t * t + di);
}
}
dist++;
}
return ans + 1;
}
};
标签:vector,20,di,int,leetcode,vis,edge,push,2022.3 来源: https://blog.csdn.net/ZHUYAN1209/article/details/123620882