1class Solution {2public:3int ans = INT_MIN, tmp = 0;4unordered_map<int, vector<int>> mp; // manager to each subordination5vector<int> *pInformTime;6int numOfMinutes(int n, int headID, vector<int> &manager, vector<int> &informTime) {7pInformTime = &informTime;8for (int i = 0; i < n; i++) mp[manager[i]].push_back(i);9dfs(headID);10return ans;11}12void dfs(int i) {13if (mp.find(i) == mp.end()) {14ans = max(ans, tmp);15} else {16tmp += (*pInformTime)[i];17for (auto &c : mp[i]) dfs(c);18tmp -= (*pInformTime)[i];19}20}21};