fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. bool dfs(string name,unordered_map<string,unordered_set<string>> & adj,
  5. vector<string> & results,unordered_map<string,int> &visited)
  6. {
  7. visited[name] =1;
  8. for(auto it : adj[name])
  9. {
  10. if(visited[it]==0)
  11. {
  12. if(!dfs(it,adj,results,visited))
  13. {
  14. return false;
  15. }
  16.  
  17. }
  18. else if(visited[it]==1)
  19. {
  20. return false;
  21. }
  22. }
  23. visited[name] =2;
  24. results.push_back(name);
  25. return true;
  26. }
  27.  
  28.  
  29. int main() {
  30. // your code goes here
  31. unordered_map<string,unordered_set<string>> adj = {
  32. {"Service", {"Adapters", "Core", "Utils"}},
  33. {"Adapters", {"Interfaces"}},
  34. {"Core", {"Types","Adapters"}},
  35. {"Utils", {"Types"}},
  36. {"Interfaces", {}},
  37. {"Types", {}} };
  38. unordered_map<string,int> visited;
  39. for(auto it : adj)
  40. {
  41. for(auto ele : it.second)
  42. {
  43. visited[ele]= 0;
  44. }
  45. visited[it.first]= 0;
  46. }
  47. string name = "Service";
  48. vector<string> results;
  49. if(dfs(name,adj,results,visited))
  50. {
  51. for(string s : results)
  52. {
  53. cout<<"...."<<s;
  54. }
  55. }
  56. else
  57. {
  58. cout<<"Cycle detected no path possible";
  59. }
  60.  
  61. return 0;
  62. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
....Interfaces....Adapters....Types....Core....Utils....Service