Pagini recente » Cod sursa (job #233660) | Cod sursa (job #1288919) | Cod sursa (job #168065) | Cod sursa (job #777036) | Cod sursa (job #657691)
Cod sursa(job #657691)
# include <fstream>
# include <vector>
# define dim 100005
# define pb push_back
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector < int > a[ dim ];
int x[ dim ], y[ dim ], mc[ dim ], sol[ dim ];
int ok = 1;
int n, m;
void euler( int nod )
{
vector < int > :: iterator it;
for ( it = a[ nod ].begin() ; it != a[ nod ].end() ; ++it )
if ( mc[ *it ] == 0 )
{
mc[ *it ] = 1;
euler( x[ *it ] + y[ *it ] - nod );
}
g << nod << " ";
}
void citire()
{
int i;
f >> n >> m;
for ( i = 1 ; i <= m ; i++ )
{
f >> x[ i ] >> y[ i ];
a[ x[ i ] ].pb( i );
a[ y[ i ] ].pb( i );
}
}
void afisare()
{
int i, j;
for ( i = 1 ; i <= n ; i++ )
{
for ( j = 0 ; j < a[ i ].size() ; j++ )
g << a[ i ][ j ] << " ";
g << "\n";
}
}
void rezolva()
{
int i;
for ( i = 1 ; i <= n && ok ; i++ )
if ( a[ i ].size() % 2 == 1 )
ok = 0;
if ( ok == 0 )
g << -1 ;
else
{
euler( 1 );
}
}
int main()
{
citire();
rezolva();
// afisare();
return 0;
}