fork download
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. #define ll long long
  5. #define endl '\n'
  6. ll N = 1e9+7;
  7. ll oo =1e13;
  8. const ll maxx = 1000000 + 3;
  9. ll n,m,k,q,x,y,z,l,r,mid,ans;
  10. vector<ll>vis;
  11. vector<vector<ll>>adj;
  12.  
  13. void DFS(ll u) {
  14. vis[u]=1;
  15. for (ll a:adj[u]) {
  16. if (vis[a] == 0 ) {
  17. DFS(a);
  18. }
  19. }
  20. }
  21. void solve() {
  22. cin >> n >> m ;
  23. vis.assign(n+1,0);
  24. adj.assign(n+1,{});
  25. for (ll i =1 ;i <= m;i++) {
  26. cin>>x>>y;
  27. adj[y].push_back(x);
  28. adj[x].push_back(y);
  29. }
  30. ll prev=-1;
  31. vector<pair<ll,ll>>o;
  32. for (ll i = 1;i<=n;i++) {
  33. if (!vis[i]) {
  34. o.push_back({i,prev});
  35. prev=i;
  36. DFS(i);
  37. }
  38. }
  39. cout<<o.size()-1<<endl;
  40. for (ll i =1;i<o.size();i++) {
  41. cout<<o[i].first<<' '<<o[i].second<<endl;
  42. }
  43. }
  44. int main() {
  45. ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  46. ll t=1 ;
  47. // cin >>t;
  48. while (t--) {
  49. ans=0;
  50. solve();
  51. }
  52. }
Success #stdin #stdout 0.01s 5320KB
stdin
4 2
1 2
3 4
stdout
1
3 1