Pagini recente » Cod sursa (job #2506548) | Cod sursa (job #1397053) | Cod sursa (job #1763870) | Cod sursa (job #2401301) | Cod sursa (job #1581119)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
const int nmax = 100005;
vector <int> g[nmax];
int n, m, x[nmax], y[nmax];
bool viz[nmax];
inline bool is_euler()
{
for(int i=1; i<=n; i++)
if((g[i].size()&1)==1) return false;
return true;
}
void euler(int dad)
{
int son, i;
for(i=0; i<g[dad].size(); i++)
{
son=g[dad][i];
if(viz[son]==false)
{
viz[son]=true;
euler(x[son]+y[son]-dad);
}
}
fout << dad << " ";
}
int main()
{
ios_base::sync_with_stdio(false);
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(!is_euler()) fout << -1;
else euler(1);
return 0;
}