Advertisement
alsiva

Pigs

May 21st, 2022
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <map>
  4. #include <set>
  5. using namespace std;
  6.  
  7. void dfs(int start, map<int, set<int>> &adjSets, map<int, bool> &used) {
  8.  
  9. used[start] = true;
  10. for (auto neighbour: adjSets[start]) {
  11. if (!used[neighbour]) {
  12. dfs(neighbour, adjSets, used);
  13. }
  14. }
  15.  
  16. }
  17.  
  18. int main() {
  19. ifstream file("input.txt");
  20. int n;
  21. file >> n;
  22.  
  23. map<int, set<int>> adjSets;
  24. map<int, bool> used;
  25.  
  26. for (int i = 0; i < n; i++) {
  27. int value;
  28. file >> value;
  29. adjSets[i].insert(value-1);
  30. adjSets[value-1].insert(i);
  31. used[i] = false;
  32. }
  33.  
  34. int result = 0;
  35. for (int i = 0; i < n; i++) {
  36. if (!used[i]) {
  37. dfs(i, adjSets, used);
  38. result += 1;
  39. }
  40. }
  41.  
  42. cout << result << endl;
  43.  
  44. return 0;
  45. }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement