Pagini recente » Cod sursa (job #2505416) | Cod sursa (job #2670526) | Cod sursa (job #2196830) | Cod sursa (job #1864684) | Cod sursa (job #2112002)
#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];
for(i=0;i<v[act].size();i++)
if(used[v[act][i]]==0)
break;
if(i<v[act].size())
{
++vf;
dest=v[act][i];
used[dest]=1;
if(from[dest]==act)
st[vf]=to[dest];
else
st[vf]=from[dest];
}
else
{
g<<act<<' ';
vf--;
}
}
return 0;
}