Pagini recente » Cod sursa (job #2692676) | Cod sursa (job #1647401) | Cod sursa (job #725146) | Cod sursa (job #3154379) | Cod sursa (job #1911884)
#include<cstdio>
#include<vector>
using namespace std;
int n,m;
vector< pair<int,int> > adj[100010];
vector<int> res;
int grad[100010];
int output[500010],pos;
bool used[500010];
void solve(int nod)
{
//used[adj[nod].back().second()]=1;
res.push_back(nod);
int next;
int temp;
bool flag;
while(!res.empty())
{
next=res.back();
while(!adj[next].empty())
{
flag=0;
if(used[adj[next].back().second]==0)
{
flag=1;
used[adj[next].back().second]=1;
res.push_back(adj[next].back().first);
temp=adj[next].back().first;
}
adj[next].pop_back();
if(flag==1)
{
next=temp;
}
}
pos++;
output[pos]=res.back();
res.pop_back();
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d",&n,&m);
int x,y;
for(int i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
adj[x].push_back(make_pair(y,i));
adj[y].push_back(make_pair(x,i));
grad[x]++;
grad[y]++;
}
bool flag=1;
for(int i=1;i<=n;i++)
{
if(grad[i]==0||grad[i]&1==1)
{
flag=0;
break;
}
}
if(flag==0)
{
printf("-1\n");
}
else
{
solve(1);
for(int i=1;i<pos;i++)
{
printf("%d ",output[i]);
}
}
}