Pagini recente » Cod sursa (job #2077437) | Cod sursa (job #589325) | Cod sursa (job #662605) | Cod sursa (job #1504309) | Cod sursa (job #1588554)
#include<cstdio>
#include<vector>
#include<deque>
using namespace std;
int n,m,x1,x2,x,y,i,nod;
int grad[100005];
bool viz[500005];
vector<int>v[100001],muc[100001];
deque<int>q;
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
muc[x].push_back(i);
muc[y].push_back(i);
grad[x]++;
grad[y]++;
}
for(i=1;i<=n;i++)
if((grad[i]&1)==1)
{
printf("-1");
return 0;
}
q.push_back(1);
while(!q.empty())
{
nod=q.back();
if(grad[nod]==0)
{
printf("%d ",nod);
q.pop_back();
}
else
{
x1=v[nod].back();
x2=muc[nod].back();
v[nod].pop_back();
muc[nod].pop_back();
if(viz[x2]==0)
{
viz[x2]=1;
q.push_back(x1);
grad[x1]--;
grad[nod]--;
}
}
}
return 0;
}