1376. 通知所有员工所需的时间


1376. 通知所有员工所需的时间

公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0n - 1。公司的总负责人通过 headID 进行标识。

manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人,manager[headID] = -1。题目保证从属关系可以用树结构显示。

公司总负责人想要向公司所有员工通告一条紧急消息。他将会首先通知他的直属下属们,然后由这些下属通知他们的下属,直到所有的员工都得知这条紧急消息。

i 名员工需要 informTime[i] 分钟来通知它的所有直属下属(也就是说在 informTime[i] 分钟后,他的所有直属下属都可以开始传播这一消息)。

返回通知所有员工这一紧急消息所需要的 分钟数

const int MAXN = 1e5+10;
int dict[MAXN];
vector<int> edge[MAXN];

class Solution {
public:
    int ans = 0;
    int numOfMinutes(int n, int headID, vector<int>& manager, vector<int>& informTime) {
        ans = 0;
        for (int i = 0;i<n;i++){
            dict[i]=0;
            edge[i].clear();
        }
        for (int i =0;i<n;i++){
            if(manager[i]!=-1){
                edge[manager[i]].push_back(i);  
            }
        }
        queue<int> q;
        q.push(headID);
        dict[headID]=0;
        while(!q.empty()){
            int x = q.front();
            q.pop();
            ans = max(ans,dict[x]);
            for (auto v:edge[x]){
                dict[v] = dict[x]+informTime[x];
                q.push(v);
            }
        }
        return ans;
    }
};

文章作者: anlen123
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 anlen123 !
 上一篇
1366. 通过投票对团队排名 1366. 通过投票对团队排名
1366. 通过投票对团队排名现在有一个特殊的排名系统,依据参赛团队在投票人心中的次序进行排名,每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位。 排名规则如下: 参赛团队的排名次序依照其所获「排位第一」的票的多少决定。如果存在
2020-05-07 anlen123
下一篇 
1383. 最大的团队表现值 1383. 最大的团队表现值
1383. 最大的团队表现值示例 1: 输入:n = 6, speed = [2,10,3,1,5,8], efficiency = [5,4,3,9,7,2], k = 2 输出:60 解释: 我们选择工程师 2(speed=10 且
2020-05-07 anlen123
  目录