Advertisement
Slayerfeed

Connect the graph

Apr 8th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.84 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4.  
  5. using namespace std;
  6. int visited[100010];
  7.  
  8. vector <int> g[100010];
  9. int name[1000010];
  10. void dfs(int x)
  11. {
  12.     if(visited[x])
  13.     {
  14.         return ;
  15.     }
  16.     visited[x]=true;
  17.     for(auto c : g[x])
  18.     {
  19.         if(!visited[c])
  20.         {
  21.             dfs(c);
  22.         }
  23.     }
  24. }
  25. int main()
  26. {
  27.     int n, m;
  28.     cin >> n >> m;
  29.     int u,v;
  30.     for(int i=0; i<m; ++i)
  31.     {
  32.         cin >> u >> v;
  33.         g[u].push_back(v);
  34.         g[v].push_back(u);
  35.     }
  36.     int cnt=0;
  37.  
  38.     for(int i=1; i<=n; ++i)
  39.     {
  40.         if(!visited[i])
  41.         {
  42.  
  43.             dfs(i);
  44.             ++cnt;
  45.             name[cnt]=i;
  46.         }
  47.     }
  48.  
  49.     int k=cnt-1;
  50.     cout << k << "\n";
  51.     for(int i=1; i<=k; ++i)
  52.     {
  53.         cout << name[i] << " " << name[i+1] << "\n";
  54.     }
  55.  
  56.  
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement