其他分享
首页 > 其他分享> > leetcode-每日一题2022.3.20 网络空闲的时刻

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