Pagini recente » Cod sursa (job #2544211) | Cod sursa (job #3258241) | Cod sursa (job #2107757) | Cod sursa (job #229060) | Cod sursa (job #3198675)
#include<bits/stdc++.h>
using namespace std;
ifstream F("ciclueuler.in");
ofstream G("ciclueuler.out");
int n,m,i,j,k,l,t,r;
vector<int> g[100001];
bitset<100001> u;
vector<int> s;
void B(int i)
{
u[i]=1;
for(int j:g[i])
if(!u[j])
B(j);
}
int main()
{
for(F>>n>>m;m--;F>>i>>j,g[i].push_back(j),g[j].push_back(i));
for(i=1;i<=n;++i) {
if(g[i].size()&1)
++k,l=i;
if(g[i].size()&&!t)
t=i;
}
if(k>2||k==1)
return G<<-1,0;
if(!l)
l=t;
for(B(l),i=1;i<=n;++i)
if(!u[i]&&g[i].size())
return G<<-1,0;
for(i=l,s.push_back(i);!s.empty();)
if(g[i].size())
s.push_back(i),j=g[i].back(),g[i].pop_back(),g[j].erase(find(g[j].begin(),g[j].end(),i)),i=j;
else if(s.size()>1)
G<<i<<' ',i=s.back(),s.pop_back();
else
s.pop_back();
return 0;
}