Cod sursa(job #587859)

Utilizator SpiderManSimoiu Robert SpiderMan Data 6 mai 2011 10:48:18
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
# include <cstdio>
# include <vector>
using namespace std ;

# define x first
# define y second

const char *FIN = "mesaj4.in", *FOU = "mesaj4.out" ;
const int MAX = 100005 ;

vector < int > A[MAX] ;
pair <int, int> sol[MAX] ;
bool viz[MAX] ;
int N, M ;

void solve (int a) {
    viz[a] = 1 ;
    for ( int i = 0, j = A[a].size (); i < j; ++i ) {
        if ( viz[ A[a][i] ] == 0 ) {
            sol[ ++sol[0].x ].x = a, sol[ sol[0].x ].y = A[a][i] ;
            solve (A[a][i]) ;
        }
    }
}

int main ( void ) {
    freopen (FIN, "r", stdin) ;
    freopen (FOU, "w", stdout) ;

    scanf ( "%d %d", &N, &M ) ;
    for ( int i = 1, x, y; i <= M; ++i ) {
        scanf ( "%d %d", &x, &y ) ;
        A[x].push_back (y), A[y].push_back (x) ;
    }
    solve (1) ;

    if (sol[0].x != N - 1) {
        printf ( "-1" ) ;
    } else {
        printf ( "%d\n", 2 * N - 2 ) ;
        for ( int i = N - 1; i > 0; --i ) {
            printf ( "%d %d\n", sol[i].y, sol[i].x ) ;
        }
        for ( int i = 1; i < N; ++i ) {
            printf ( "%d %d\n", sol[i].x, sol[i].y ) ;
        }
    }
}