Pagini recente » Cod sursa (job #2477607) | Cod sursa (job #2738287) | Cod sursa (job #3220812) | Cod sursa (job #2195880) | Cod sursa (job #2112008)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> v[100001];
bool used[500001];
int st[500001],from[500001],to[500001];
int main()
{
int n,m,i,ok,x,y,vf,act,dest;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y;
from[i]=x;
to[i]=y;
v[x].push_back(i);
v[y].push_back(i);
}
ok=0;
for(i=1;i<=n;i++)
{
if(v[x].size()%2==1)
ok++;
}
if(ok!=0)
{
g<<-1<<'\n';
return 0;
}
vf=1;
st[vf]=1;
while(vf>0)
{
act=st[vf];
if(v[act].size()>0)
{
i=v[act].size()-1;
dest=v[act][i];
v[act].pop_back();
if(used[dest]==0)
{
used[dest]=1;
vf++;
if(from[dest]==act)
st[vf]=to[dest];
else
st[vf]=from[dest];
}
}
else
{
g<<act<<' ';
vf--;
}
}
return 0;
}