Pagini recente » Cod sursa (job #2749933) | Cod sursa (job #36429) | Cod sursa (job #2149227) | Cod sursa (job #3189359) | Cod sursa (job #1908196)
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <set>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct adat
{
multiset<int> mp;
};
void del(int f, int g, vector<adat>& x)
{
auto it=x[f].mp.find(g);
x[f].mp.erase(it);
it=x[g].mp.find(f);
x[g].mp.erase(it);
}
int main()
{
int n,m;
fin>>n>>m;
vector<adat> x(n+1);
int f,g,i;
for(i=1;i<=m;i++)
{
fin>>f>>g;
x[f].mp.insert(g);
x[g].mp.insert(f);
}
for(i=1;i<=n;i++)
{
if(x[i].mp.size()%2!=0)
{
fout<<-1;
return 0;
}
}
vector<int> a;
a.push_back(1);
int akt,akti=0;
while(akti>-1)
{
akt=a[akti];
if(x[akt].mp.size()==0)
{
akti--;
}
else
{
a.insert(a.begin()+akti+1,*x[akt].mp.begin());
del(akt,*x[akt].mp.begin(),x);
akti++;
}
}
for(i=0;i<a.size()-1;i++)
{
fout<<a[i]<<" ";
}
}