Advertisement
Graf_Rav

Untitled

Jan 8th, 2018
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <stack>
  4.  
  5. using namespace std;
  6.  
  7. stack<int> a;
  8.  
  9. void dfs(int v, vector<vector<int>> &graph, vector<bool> &visited, int &ans) {
  10.     visited[v] = true;
  11.     for (int i = 0; i < (int)graph[v].size(); ++i) {
  12.         if (graph[v][i] && !visited[i]){
  13.             ans++;
  14.             a.push(v+1);
  15.             a.push(i+1);
  16.             dfs(i, graph, visited, ans);
  17.         }
  18.     }
  19. }
  20.  
  21. int main(){
  22.     int ans=0;
  23.     int n,m;
  24.     cin>>n>>m;
  25.     vector< vector<int> > graph;
  26.     vector<int> visited;
  27.    
  28.     int a, b;
  29.     for(int i=0;i<m;i++){
  30.         cin>>a>>b;
  31.         graph[a-1][b-1]=true;
  32.         graph[b-1][a-1]=true;
  33.     }
  34.    
  35.     for(int i=0;i<n;i++){
  36.         if(!visited[i]){
  37.             dsf(i,graph,visited,ans);
  38.         }
  39.     }
  40.     cout<<a<<'\n';
  41.     while(!a.empty()){
  42.         cout<<a.top()<<' ';
  43.         a.pop();
  44.         cout<<a.top()<<'\n';
  45.         a.pop();
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement