Pagini recente » Cod sursa (job #188789) | Cod sursa (job #3180535) | Cod sursa (job #2406345) | Cod sursa (job #2722516) | Cod sursa (job #2049346)
#include <fstream>
#include <vector>
#define file "ciclueuler"
#define N 100003
using namespace std;
ifstream fin(file".in");
ofstream fout(file".out");
vector< vector<int> > v(N);
int n,m,x,y;
int gr[N];
bool Ciclu()
{
for(int i=1; i<=n; ++i)
if(gr[i] == 0 || gr[i]%2 != 0) return 0;
return 1;
}
vector<int>::iterator it;
int sol[5*N],nsol;
inline void Euler(int nod)
{
for(it = v[nod].begin(); it!=v[nod].end(); ++it)
{
int nodurm = *it;
v[nod].erase(it);
Euler(nodurm);
sol[++nsol] = nod;
}
}
int main()
{
fin>>n>>m;
while(m--)
{
fin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
++gr[x];
++gr[y];
}
if(Ciclu())
{
Euler(1);
for(int i=1; i<=nsol; ++i)
fout<<sol[i]<<" ";
}
else fout<<"-1\n";
fin.close(); fout.close();
return 0;
}