Pagini recente » Cod sursa (job #871133) | Cod sursa (job #1573229) | Cod sursa (job #756896) | Cod sursa (job #572933) | Cod sursa (job #2106451)
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
const int NMAX=100005,MMAX=500005;
vector <pair <int,int> > a[NMAX];
stack <int> s;
int grad[NMAX];
int n,m,x,y,i,vf,nr=0;
bool viz[MMAX];
int main()
{
f>>n>>m;
for(i=1 ; i<=m ; ++i)
{
f>>x>>y;
a[x].push_back(make_pair(y,i));
a[y].push_back(make_pair(x,i));
grad[x]++;
grad[y]++;
}
for(i=1 ; i<=n ; ++i)
if(grad[i]%2)
{
g<<"-1"<<'\n';
return 0;
}
s.push(1);
while(!s.empty())
{
vf=s.top();
if(a[vf].size())
{
x=a[vf].back().first;
y=a[vf].back().second;
a[vf].pop_back();
if(!viz[y])
{
viz[y]=1;
s.push(x);
}
}
else
{
s.pop();
nr++;
if(nr<=m)
g<<vf<<" ";
}
}
g<<'\n';
return 0;
}