Pagini recente » Cod sursa (job #1665983) | Cod sursa (job #2941889) | Cod sursa (job #1519975) | Cod sursa (job #957528) | Cod sursa (job #1581257)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
const int nmax = 100005;
const int mmax = 500005;
vector <int> g[nmax];
int n, m, x[mmax], y[mmax];
bool viz[mmax];
inline bool is_euler()
{
for(int i=1; i<=n; i++)
if(g[i].size()%2==1) return false;
return true;
}
void euler(int dad)
{
int i, son;
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);
int i;
fin >> n >> m;
for(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;
}