Pagini recente » Cod sursa (job #655166) | Cod sursa (job #2631238) | Cod sursa (job #2388037) | Cod sursa (job #1184577) | Cod sursa (job #2920827)
#include <bits/stdc++.h>
#define nmax 100001
#define mmax 500001
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector<int> adj[nmax];
bool del[mmax];
int a[mmax],b[mmax];
int n,m;
void cic(int nod,bool first=0)
{
while(adj[nod].size()>0)
{
int ed=adj[nod].back();
adj[nod].pop_back();
if(del[ed]) continue;
//cout<<nod<<','<<ed<<','<<a[ed]<<','<<b[ed]<<'\n';
del[ed]=1;
if(a[ed]==nod) cic(b[ed]);
else cic(a[ed]);
}
if(!first)
g<<nod<<' ';
}
int main()
{
f>>n>>m;
for(int i=0;i<m;i++)
{
f>>a[i]>>b[i];
adj[a[i]].push_back(i);
adj[b[i]].push_back(i);
}
bool ok=1;
for(int i=1;i<=n;i++) if(adj[i].size()%2!=0) ok=0;
if(!ok) g<<-1;
else cic(1,1);
return 0;
}