Pagini recente » Cod sursa (job #1923149) | Cod sursa (job #523217) | Cod sursa (job #1411452) | Cod sursa (job #2534695) | Cod sursa (job #757471)
Cod sursa(job #757471)
#include <cstdio>
#include <vector>
#include <deque>
using namespace std;
vector<int> g[100020];
deque<int> q;
bool ok;
int n,m,x,y,i;
void euler(int nod)
{
int nod1;
vector<int>::iterator it;
q.push_back(nod);
while(!q.empty()){
nod=q.front();
if(g[nod].empty()){q.pop_front();printf("%d ",nod);}
else{
nod1=g[nod].back();
q.push_front(nod1);
g[nod].pop_back();
for(it=g[nod1].begin();it!=g[nod1].end();++it)
if(*it==nod){g[nod1].erase(it);break;}
}
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d\n",&n,&m);
for(i=1;i<=m;++i){
scanf("%d %d\n",&x,&y);
g[y].push_back(x);
g[x].push_back(y);
}
ok=true;
for(i=1;i<=n;++i)
if(g[i].size()%2!=0)ok=false;
if(ok==false)printf("-1\n");
else euler(1);
return 0;
}