Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector<char> findAllReportingEmployees(char M, unordered_map<char, vector<char>> &MtoE, map<char, vector<char>> &ans)
- {
- if (ans.find(M) != ans.end())
- {
- return ans[M];
- }
- vector<char> E = MtoE[M];
- for (char &e : MtoE[M])
- {
- vector<char> employees = findAllReportingEmployees(e, MtoE, ans);
- for (auto &x : employees)
- {
- E.push_back(x);
- }
- }
- ans[M] = E;
- return E;
- }
- void findEmployees(unordered_map<char, char> &EtoM)
- {
- unordered_map<char, vector<char>> MtoE;
- for (auto &etom : EtoM)
- {
- if (etom.first != etom.second)
- {
- MtoE[etom.second].push_back(etom.first);
- }
- }
- map<char, vector<char>> ans;
- for (auto &p : EtoM)
- {
- findAllReportingEmployees(p.first, MtoE, ans);
- }
- for (auto &p : ans)
- {
- cout << p.first << " -> ";
- for (auto &c : p.second)
- {
- cout << c << ", ";
- }
- cout << endl;
- }
- }
- void solve()
- {
- unordered_map<char, char> EtoM = {{'A', 'A'}, {'B', 'A'}, {'C', 'B'}, {'D', 'B'}, {'E', 'D'}, {'F', 'E'}};
- findEmployees(EtoM);
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement