Pagini recente » Cod sursa (job #2440235) | Cod sursa (job #798836) | Cod sursa (job #2307855) | Cod sursa (job #1563008) | Cod sursa (job #1897262)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,viz[100001];
vector<int> v[100001];
void df(int k)
{
viz[k]=1;
for(int i=0;i<v[k].size();i++)
if(viz[v[k][i]]==0) df(v[k][i]);
}
int conex()
{
df(1);
for(int i=1;i<=n;i++)
if(viz[i]==0) return 0;
return 1;
}
int euler()
{
if(!conex()) return 0;
return 1;
}
void ciclu(int k)
{
int maxx=0;
int nmax=0;
g<<k<<" ";
for(int i=0;i<v[k].size();i++)
{
if(v[v[k][i]].size()>maxx)
{
maxx=v[v[k][i]].size();
nmax=i+1;
}
}
///g<<nmax<<" "<<v[k][nmax-1]<<'\n';
if(nmax)
{
int w=v[k][nmax-1];
v[k].erase(v[k].begin()+nmax-1);
v[v[k][nmax-1]].erase(find(v[v[k][nmax-1]].begin(),v[v[k][nmax-1]].end(),k));
ciclu(w);
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
for(int i=1;i<=n;i++)
if(v[i].size()%2==1) {g<<"-1"<<'\n'; return 0;}
if(euler()) ciclu(1); else g<<"-1"<<'\n';
return 0;
}