Pagini recente » Cod sursa (job #1174686) | Cod sursa (job #1009290) | Cod sursa (job #1514502) | Cod sursa (job #1788812) | Cod sursa (job #2883946)
#include <fstream>
#include <stack>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> v[100011];
stack <int> q;
int n,m,i,x,y,a[500011],b[500011],k,p,kanye;
bool vizitat[500011];
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y;
v[x].push_back(i);
v[y].push_back(i);
a[i]=x;
b[i]=y;
}
for(i=1;i<=n;i++)
if(v[i].size()%2==1)
{
g<<-1;
return 0;
}
q.push(1);
while(q.empty()==false)
{
k=q.top();
if(v[k].empty()==false)
{
kanye=v[k].back();
v[k].pop_back();
if(vizitat[kanye]==0)
{
vizitat[kanye]=1;
if(a[kanye]==k)
p=b[kanye];
else
p=a[kanye];
q.push(p);
}
}
else
{
q.pop();
g<<k<<" ";
}
}
return 0;
}