Pagini recente » Cod sursa (job #131913) | Cod sursa (job #2444173) | Cod sursa (job #791217) | Cod sursa (job #257721) | Cod sursa (job #1886902)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,i,M,j,nod;
vector<int> l[50010],stk,ans;
struct muchie
{
int p1,p2;
bool scris;
} m[50010];
int main()
{
fin>>n>>M;
for(i=1;i<=M;++i)
{
fin>>m[i].p1>>m[i].p2;
l[m[i].p1].push_back(i);
l[m[i].p2].push_back(i);
}
for(i=1;i<=n;++i)
{
if(l[i].size()%2==1)
{
fout<<-1;
return 0;
}
}
stk.push_back(1);
while(!stk.empty())
{
nod=stk.back();
if(!l[nod].empty())
{
i=l[nod].back();
l[nod].pop_back();
if(m[i].scris==0)
{
m[i].scris=1;
if(m[i].p1==nod)
{
stk.push_back(m[i].p2);
}
else
{
stk.push_back(m[i].p1);
}
}
}
else
{
ans.push_back(stk.back());
stk.pop_back();
}
}
for(i=0;i<ans.size();++i)
{
fout<<ans[i]<<" ";
}
return 0;
}