Cod sursa(job #897733)

Utilizator cont_testAlexandru Serbanescu cont_test Data 27 februarie 2013 21:53:48
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
 # include <fstream>
 # include <cstring>
 # include <algorithm>
 # include <vector>

 # define dim 100005
 # define pb push_back

 using namespace std;

 ifstream f("ciclueuler.in");
 ofstream g("ciclueuler.out");

 struct euler
 {
     int nod, muchie;
 };

 vector < euler > A[ dim ];
 bool viz[ 500005 ];
 int N, M;

 inline void df( int X )
 {
     int i;
     for ( i = 0 ; i < A[ X ].size() ; ++i )
        if ( viz[ A[ X ][ i ].muchie ] == 0 )
        {
            viz[ A[ X ][ i ].muchie ] = 1;
            df( A[ X ][ i ].nod );
        }
    g << X << " ";
 }

 void citire()
 {
     int i, X , Y;

     f >> N >> M;
     for ( i = 1 ; i <= M ; i++ )
     {
         f >> X >> Y;
         A[ X ].pb( ( euler ) { Y, i } );
         A[ Y ].pb( ( euler ) { X, i } );
     }
     bool ok = 1;
     for ( i = 1 ; i <= N && ok == 1 ; i++ )
     {
        if ( A[ i ].size() % 2 != 0 )
            g << -1 << "\n", ok = 0;
     }
     if ( ok == 1 )
         df( 1 );

 }

 int main()
 {
     citire();
     return 0;
 }