Pagini recente » Cod sursa (job #1264188) | Cod sursa (job #1713355) | Cod sursa (job #997988) | Cod sursa (job #2469200) | Cod sursa (job #2285221)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int nmax=100005;
const int mmax=500005;
vector<int> v[nmax];
int a[mmax],b[mmax],ans[mmax],st[mmax],used[mmax];
int n,m,x,y,i,start,u,mu,cntans;
void add(int x,int y)
{
v[x].push_back(i);
v[y].push_back(i);
}
int main()
{
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>a[i]>>b[i];
add(a[i],b[i]);
}
for(start=1;v[start].size()==0;start++);
st[u=1]=start;
for(i=1;i<=n;i++)
if(v[i].size()%2)
{
g<<"-1";
return 0;
}
while(u!=0)
{
x=st[u];
if(v[x].size())
{
mu=v[x].back();
v[x].pop_back();
if(!used[mu])
{
y=(a[mu]^b[mu]^x);
st[++u]=y;
used[mu]=1;
}
}
else
{
u--;
ans[++cntans]=x;
}
}
if(cntans!=m+1)
{
g<<"-1";
return 0;
}
for(i=1;i<cntans;i++)
g<<ans[i]<<' ';
return 0;
}