Pagini recente » Cod sursa (job #2268690) | Cod sursa (job #10404) | Cod sursa (job #2618459) | Cod sursa (job #2117471) | Cod sursa (job #601581)
Cod sursa(job #601581)
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
vector <int> gf[100001];
int i, j, n, m, gr[100001];
queue<int>c;
void euler( int nod ){
int x;
for (;gf[nod].size();){
x = *gf[nod].begin();
gf[nod].erase(gf[nod].begin());
for(vector<int>::iterator it=gf[x].begin();it!=gf[x].end();++it)
if (*it==nod) {
gf[x].erase(it);
break;
}
euler(x);
}
c.push(nod);
}
int main(){
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);
memset(gr,0,sizeof(gr));
for (i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
gf[x].push_back(y);
gf[y].push_back(x);
gr[x]++;gr[y]++;
}
for (i=1;i<=n;++i)
if (gr[i]%2){
printf("%c",-1);
return 0;
}
euler( 1 );
c.pop();
while (!c.empty()){
printf("%d ",c.front());
c.pop();
}
return 0;
}