Advertisement
kolbka_

Untitled

Jan 17th, 2022
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1.  
  2.  
  3.  
  4. #include <iostream>
  5. #include <cassert>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <unordered_map>
  9. #include "optimization.h"
  10. #include <map>
  11. #include <unordered_set>
  12.  
  13. #define all(a) a.begin, a.end()
  14. using namespace std;
  15. vector<pair<bool,int>> mark;
  16. vector<vector<int>> tree;
  17. bool flag = false;
  18.  
  19. void dfs(int root, int counter) {
  20. mark[root] = {true, counter};
  21. for (int i = 0; i < size(tree[root]); i++) {
  22. if (!mark[tree[root][i]].first) {
  23. dfs(tree[root][i], counter);
  24. }
  25. }
  26. }
  27.  
  28. int main() {
  29. int v;
  30. int e;
  31. cin >> v >> e;
  32. mark.resize(v + 1, {false, 0});
  33. tree.resize(v + 1);
  34. for (int i = 0; i < e; i++) {
  35. int a, b;
  36. cin >> a >> b;
  37. tree[a].push_back(b);
  38. tree[b].push_back(a);
  39. }
  40. int counter = 0;
  41. for (int i = 1; i <= v; i++){
  42. if (!mark[i].first){
  43. dfs(i, ++counter);
  44. }
  45. }
  46. for (int i = 1; i <= v; i++){
  47. std::cout << mark[i].second << " ";
  48. }
  49. }
  50.  
  51.  
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement