题解:
class Solution {
public:
int numOfMinutes(int n, int headID, vector<int>& manager, vector<int>& informTime) {
std::unordered_map<int, std::vector<int>> graph;
for (int i = 0; i < manager.size(); ++i) {
graph[manager[i]].push_back(i);
}
std::queue<int> que;
que.push(headID);
// 通知时间
std::vector<int> distance(n);
distance[headID] = 0;
// 结果
int result = 0;
while (!que.empty()) {
auto f = que.front();
que.pop();
// 如果没有下属,则更新下结果
if (graph.find(f) == graph.end()) {
result = max(result, distance[f]);
continue;
}
// 遍历邻居
for (auto neigh : graph[f]) {
que.push(neigh);
// 更新距离
distance[neigh] = distance[f] + informTime[f];
}
}
return result;
}
};