Pagini recente » Cod sursa (job #2663311) | Cod sursa (job #635200) | Cod sursa (job #2663304) | Cod sursa (job #2780317) | Cod sursa (job #727810)
Cod sursa(job #727810)
#include<fstream>
#include<set>
#include<stack>
#include<vector>
#define _NM 100005
using namespace std;
int main()
{
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int nN,nM;
fin>>nN>>nM;
static multiset<int> sAd[_NM];
for (int i=1;i<=nM;i++)
{
int nod1,nod2;
fin>>nod1>>nod2;
sAd[nod1].insert(nod2);
sAd[nod2].insert(nod1);
}
for (int i=1;i<=nN;i++)
if (sAd[i].size()%2!=0)
{
fout<<-1;
return 0;
}
//
stack<int> s;
vector<int> sol;
s.push(1);
while(!s.empty())
{
int cur=s.top();
if (sAd[cur].size()==0)
{
sol.push_back(cur);
s.pop();
}
else
{
int nnod=*sAd[cur].begin();
sAd[cur].erase(sAd[cur].begin());
sAd[nnod].erase(sAd[nnod].find(cur));
s.push(nnod);
}
}
for (unsigned i=0;i<sol.size()-1;i++)
fout<<sol[i]<<' ';
return 0;
}