Pagini recente » Diferente pentru cn-soft-grigore-moisil intre reviziile 2 si 14 | patrol2 | Istoria paginii summer-challenge-unu | Dame2 | Cod sursa (job #2185655)
#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;
int n, m;
int sol[mmax+1];
stack <int> s;
vector <int> g[nmax+1];
int main( ) {
fin>>n>>m;
for ( int i= 1, x, y; i<=m; ++i ) {
fin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
for ( int i= 1; i<=n; ++i ) {
if ( (int)g[i].size()%2==1 ) {
fout<<"-1\n";
return 0;
}
}
for ( s.push(1); !s.empty(); ) {
int x= s.top();
if ( (int)g[x].size()>0 ) {
s.push(g[x].back());
g[g[x].back()].erase(find(g[g[x].back()].begin(), g[g[x].back()].end(), x));
g[x].pop_back();
} else {
sol[++sol[0]]= x;
s.pop();
}
}
for ( int i= 1; i<=sol[0]-1; ++i ) {
fout<<sol[i]<<" ";
}
fout<<"\n";
return 0;
}