Pagini recente » Cod sursa (job #3284707) | Cod sursa (job #1120202) | Cod sursa (job #934184) | Cod sursa (job #3273209) | Cod sursa (job #2185663)
#include <algorithm>
#include <fstream>
#include <stack>
#include <vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int nmax= 100000;
const int mmax= 500000;
vector <int> v[nmax+1];
stack <int> s;
int sol[mmax+1];
int main( ) {
int n, m;
fin>>n>>m;
for ( int i= 1; i<=m; ++i ) {
int x, y;
fin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
for ( int i= 1; i<=n; ++i ) {
if ( (int)v[i].size()%2==1 ) {
fout<<"-1\n";
return 0;
}
}
int c= -1;
s.push(1);
while ( !s.empty() ) {
int x= s.top();
if ( (int)v[x].size()>0 ) {
int y= v[x].back();
v[x].pop_back();
s.push(y);
v[y].erase( find( v[y].begin(), v[y].end(), x ) );
} else {
sol[++c]= x;
s.pop();
}
}
for ( int i= 0; i<c; ++i ) {
fout<<sol[i]<<" ";
}
fout<<"\n";
return 0;
}