Cod sursa(job #529289)

Utilizator david_raucaRauca Ioan David david_rauca Data 4 februarie 2011 17:32:20
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream>
#include<vector>
using namespace std;

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

#define DIM 100001

int n, m, t;

vector<vector<int> > G;
bool s[DIM];
vector<pair<int,int> > sol;

void Read();
void DF(int x);
void Write();

int main()
{
    Read();
    DF(1);
    Write();
    
    fin.close();
    fout.close();
    
    return 0;
}

void Read()
{
     fin >> n >> m;
     G.resize(n+1);
     int a, b;
     
     for( int i = 1; i <= m; ++i )
     {
          fin >> a >> b;
          G[a].push_back(b);
          G[b].push_back(a);
     }
}

void DF( int x )
{
     ++t;
     s[x] = true;
     for( int i = 0; i < G[x].size(); ++i )
          if( !s[ G[x][i] ] )
          {
              sol.push_back( make_pair(x, G[x][i]) );
              DF( G[x][i] );
              sol.push_back( make_pair(G[x][i], x) );
          }
}

void Write()
{
     if( t < n )
         fout << -1;
     else
     {
         fout << 2*(n-1) << '\n';
         for( int i = 0; i < sol.size(); ++i )
              fout << sol[i].second << ' ' << sol[i].first << '\n';
     } 
}