Cod sursa(job #2634166)

Utilizator euyoTukanul euyo Data 9 iulie 2020 22:34:49
Problema Mesaj4 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <vector>
#include <cctype>

using namespace std;

ifstream fin( "mesaj4.in" );
ofstream fout( "mesaj4.out" );

const int MaxN = 100000;

int read() {
  int num = 0, ch;
  ch = fin.get();
  while ( isspace( ch ) ) {
	ch = fin.get();
  }
  do {
	num = num * 10 + ch - '0';
    ch = fin.get();
  } while ( isdigit( ch ) );
  return num;
}

vector<int> adj[MaxN + 1];
int viz[MaxN + 1];
int solx[MaxN + 1];
int soly[MaxN + 1];
int nsol;

void DFS( int node ) {
  int i;
  
  viz[node] = 1;
  for ( i = 0; i < adj[node].size(); ++i ) {
    if ( !viz[adj[node][i]] ) {
      solx[nsol] = node;
	  soly[nsol++] = adj[node][i];
	  DFS( adj[node][i] );
	}
  }
}

int main() {
  int n, m, i, x, y;

  fin >> n >> m;
  for ( i = 0; i < m; ++i ) {
    x = read();
	y = read();
	adj[x].push_back( y );
	adj[y].push_back( x );
  }
  DFS( 1 );
  if ( nsol == n - 1 ) {
    fout << 2 * nsol << "\n";
    for ( i = nsol - 1; i >= 0; --i ) {
      fout << soly[i] << " " << solx[i] << "\n";
    }
    for ( i = 0; i < nsol; ++i ) {
      fout << solx[i] << " " << soly[i] << "\n";
    }
  } else {
	fout << "-1";
  }
  fin.close();
  fout.close();
  return 0;
}