fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> adj_list[100];
  5. int visited[100];
  6.  
  7. void DFS(int currnode) {
  8. visited[currnode] = 1;
  9.  
  10.  
  11.  
  12.  
  13. for (int i = 0; i < adj_list[currnode].size(); i++) {
  14. int child = adj_list[currnode][i];
  15. if (visited[child] == 0) {
  16.  
  17. DFS(child);
  18. }
  19. }
  20. }
  21.  
  22.  
  23. int main() {
  24. int node, edge;
  25. cin >> node >> edge;
  26.  
  27. // Fix: Loop should run for edge times, not edge+1
  28. for (int i = 0; i < edge; i++) {
  29. int u, v;
  30. cin >> u >> v;
  31. adj_list[u].push_back(v);
  32. adj_list[v].push_back(u); // undirected
  33. }
  34.  
  35. int components = 0;
  36. for (int i = 1; i <= node; i++) {
  37. if (visited[i] == 0) {
  38. DFS(i);
  39. components++;
  40. }
  41. }
  42.  
  43. cout << "Total connected components: " << components << endl;
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 5324KB
stdin
6 3
1 2
3 4
5 6
stdout
Total connected components: 3