Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. void dfs(int v) {
  2. used[v] = true;
  3. comps.back().push_back(v);
  4. for (int u = 0; u < n; u++) {
  5. if ((graph[v][u] == 1) && (!used[u])) {
  6. dfs(u);
  7. }
  8. }
  9. }
  10.  
  11. int FindMaxComponent() {
  12. int max = 0;
  13. int num_max = -1;
  14. for (int i = 0; i < n; i++)
  15. used[i] = false;
  16. for (int i = 0; i < n; i++) {
  17. if (!used[i]) {
  18. comps.push_back(vector<int>());
  19. dfs(i);
  20. }
  21. if (comps.back().size() > max) {
  22. max = comps.back().size();
  23. num_max = i;
  24. }
  25. }
  26. return num_max;
  27. }
  28.  
  29. int FindDiametr() {
  30. int max = 0;
  31. queue<int> que;
  32. int d[n];
  33. for (int i = 0; i < n; i++)
  34. d[i] = -1;
  35. int num_max = FindMaxComponent();
  36. que.push(num_max);
  37. d[num_max] = 0;
  38. while (!que.empty()) {
  39. int v = que.front();
  40. que.pop();
  41. for (int i = 0; i < n; i++) {
  42. if ((d[i] == -1) && (graph[v][i] == 1)) {
  43. que.push(i);
  44. d[i] = d[v] + 1;
  45. }
  46. }
  47. }
  48. for (int i = 0; i < n; i++)
  49. if (d[i] > max)
  50. max = d[i];
  51. return max;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement