Pagini recente » Cod sursa (job #2792825) | Cod sursa (job #1538148) | Cod sursa (job #56730) | Cod sursa (job #1378106) | Cod sursa (job #653033)
Cod sursa(job #653033)
//#include <fstream>
#include <cstdio>
#include <vector>
using namespace std;
//ifstream f("ciclueuler.in");
//ofstream g("ciclueuler.out");
int n, m, x[500001], y[500001], sol[500001];
bool mc[500001];
vector <int> A[100001];
inline void Euler(int nod)
{ for (int i=0; i<A[nod].size(); i++)
{
if (!mc[A[nod][i]])
{
mc[A[nod][i]] = true;
Euler(x[A[nod][i]] + y[A[nod][i]] - nod);
}
}
sol[++sol[0]] = nod;
}
int main()
{ freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);//f >> n >> m;
for (int i = 1; i <= m; ++i)
{ scanf("%d%d",&x[i],&y[i]); //f >> x[i] >> y[i];
A[x[i]].push_back(i);
A[y[i]].push_back(i);
}
for (int i = 1; i <= n; ++i)
if (A[i].size() % 2 == 1)
{
printf("-1\n"); //g << "-1\n";
//g.close();
return 0;
}
Euler(1);
for (int i = 1; i <= sol[0]; ++i)
printf("%d ",sol[i]); //g << sol[i] << ' ';
printf("\n"); //g << '\n';
//g.close();
return 0;
}