Pagini recente » Cod sursa (job #1094453) | Cod sursa (job #2152097) | Cod sursa (job #1686159) | Cod sursa (job #324148) | Cod sursa (job #1909425)
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <set>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct adat
{
list<int> ls;
};
typedef pair<int,int> P;
int main()
{
int n,m;
fin>>n>>m;
vector<adat> x(n+1);
vector<P> q(m+1);
int f,g,i;
for(i=1;i<=m;i++)
{
fin>>f>>g;
x[f].ls.push_back(i);
x[g].ls.push_back(i);
q[i].first=f;
q[i].second=g;
}
for(i=1;i<=n;i++)
{
if(x[i].ls.size()%2!=0)
{
fout<<-1;
return 0;
}
}
vector<int> a;
vector<int> l(m+1);
a.push_back(1);
int akt,akti=0;
int u,e;
//for(auto &e : x[1].ls) cout<<e;
while(akti>-1)
{
akt=a[akti];
if(x[akt].ls.size()==0)
{
akti--;
}
else
{
e=x[akt].ls.front();
x[akt].ls.pop_front();
if(l[e]==0)
{
l[e]=1;
if(q[e].first==akt) u=q[e].second;
else u=q[e].first;
a.insert(a.begin()+akti+1,u);
akti++;
}
}
}
for(i=0;i<a.size()-1;i++)
{
fout<<a[i]<<" ";
}
}