Advertisement
Valkyrie006

Untitled

Oct 15th, 2021
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. vector<char> findAllReportingEmployees(char M, unordered_map<char, vector<char>> &MtoE, map<char, vector<char>> &ans)
  2. {
  3.     if (ans.find(M) != ans.end())
  4.     {
  5.         return ans[M];
  6.     }
  7.     vector<char> E = MtoE[M];
  8.     for (char &e : MtoE[M])
  9.     {
  10.         vector<char> employees = findAllReportingEmployees(e, MtoE, ans);
  11.         for (auto &x : employees)
  12.         {
  13.             E.push_back(x);
  14.         }
  15.     }
  16.     ans[M] = E;
  17.     return E;
  18. }
  19.  
  20. void findEmployees(unordered_map<char, char> &EtoM)
  21. {
  22.     unordered_map<char, vector<char>> MtoE;
  23.     for (auto &etom : EtoM)
  24.     {
  25.         if (etom.first != etom.second)
  26.         {
  27.             MtoE[etom.second].push_back(etom.first);
  28.         }
  29.     }
  30.     map<char, vector<char>> ans;
  31.  
  32.     for (auto &p : EtoM)
  33.     {
  34.         findAllReportingEmployees(p.first, MtoE, ans);
  35.     }
  36.     for (auto &p : ans)
  37.     {
  38.         cout << p.first << " -> ";
  39.         for (auto &c : p.second)
  40.         {
  41.             cout << c << ", ";
  42.         }
  43.         cout << endl;
  44.     }
  45. }
  46.  
  47. void solve()
  48. {
  49.     unordered_map<char, char> EtoM = {{'A', 'A'}, {'B', 'A'}, {'C', 'B'}, {'D', 'B'}, {'E', 'D'}, {'F', 'E'}};
  50.     findEmployees(EtoM);
  51.     return;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement