Pagini recente » Cod sursa (job #1537437) | Cod sursa (job #611112) | Cod sursa (job #2888176) | Cod sursa (job #2799616) | Cod sursa (job #2537192)
#include <fstream>
#include <vector>
#define Nmax 100001
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m,nr,grad[Nmax],OK,ap[Nmax];
struct ceva{
int Nod,numar;
};
vector <ceva> G[Nmax];
vector <int> sol;
void euler(int start)
{
for (auto i:G[start]){
int x=i.Nod;
int y=i.numar;
if (ap[y]==0)
{
ap[y]=1;
euler(x);
}
}
nr++;
sol.push_back(start);
return;
}
int main()
{
int a,b,i,j;
fin>>n>>m;
for (i=1;i<=m;i++)
{
fin>>a>>b;
G[a].push_back({b,i});
G[b].push_back({a,i});
grad[a]++;
grad[b]++;
}
for (i=1;i<=n;i++){
if (grad[i]%2==1)
{
OK=-1;
break;
}
}
if (OK==-1){
fout<<-1;
}
else{
euler (1);
sol.pop_back();
for (vector <int> :: iterator it=sol.end();it!=sol.begin();--it){
fout<<*it<<" ";
}
}
return 0;
}