Pagini recente » Cod sursa (job #2765337) | Cod sursa (job #658890) | Cod sursa (job #973938) | Cod sursa (job #1749496) | Cod sursa (job #833345)
Cod sursa(job #833345)
#include<fstream>
#include<vector>
using namespace std;
const int Mmax = 500500, Nmax = 100100;
ifstream fin("ciclueuler.in"); ofstream fout("ciclueuler.out");
int n, m, nr, x[Mmax], y[Mmax], sol[Mmax];
vector<int> g[Nmax];
bool viz[Mmax];
inline void euler(int nod)
{
vector<int>::iterator it = g[nod].begin(), sf = g[nod].end();
for( ; it != sf; ++it)
{
if(!viz[*it])
{
viz[*it] = true;
euler(x[*it] + y[*it] - nod);
}
}
sol[++nr] = nod;
}
inline int cont()
{
for(int i = 1; i <= n; ++i)
if(g[i].size() % 2) return 0;
return 1;
}
int main()
{
fin>>n>>m;
for(int i = 1; i <= m; ++i)
{
fin>>x[i]>>y[i];
g[x[i]].push_back(i);
g[y[i]].push_back(i);
}
if(cont())
{
euler(1);
for(int i = nr; i >= 1; --i) fout<<sol[i]<<' ';
}
else
fout<<-1;
fout<<'\n';
fout.close();
return 0;
}