fork download
  1. #include <iostream>
  2. #include <unordered_map>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int visited[1000001];
  7.  
  8. void DFS(unordered_map<int,unordered_map<int,int> >& Map,int*visited,int i)
  9. {
  10. //cout<<"i="<<i<<endl;
  11. visited[i]=1;
  12.  
  13. for(auto it=Map[i].begin();it!=Map[i].end();it++)
  14. {
  15. if(visited[it->first] == 0)
  16. {
  17. DFS(Map,visited,it->first);
  18. }
  19. }
  20. }
  21.  
  22.  
  23. int main() {
  24.  
  25. int n,m;
  26. cin>>n>>m;
  27.  
  28. unordered_map<int,unordered_map<int,int> > Map;
  29. for(int i=0;i<m;i++)
  30. {
  31. int x,y;
  32. cin>>x>>y;
  33. Map[x-1][y-1]=1;
  34. Map[y-1][x-1]=1;
  35. }
  36.  
  37. for(int i=0;i<n;i++)
  38. {
  39. visited[i]=0;
  40. }
  41.  
  42. int count1=0;
  43. vector<int> bridges;
  44. for(int i=0;i<n;i++)
  45. {
  46. if(visited[i] == 0)
  47. {
  48. bridges.push_back(i+1);
  49. DFS(Map,visited,i);
  50. count1++;
  51. }
  52. }
  53.  
  54. cout<<bridges.size()-1<<endl;
  55. for(int i=0;i<bridges.size()-1;i++)
  56. {
  57. cout<<bridges[i]<<" "<<bridges[i+1]<<endl;
  58. }
  59.  
  60.  
  61. return 0;
  62. }
Success #stdin #stdout 0.01s 5292KB
stdin
10 10
3 9
6 8
9 10
7 8
8 10
7 10
1 9
8 9
6 9
2 7
stdout
2
1 4
4 5