Pagini recente » Cod sursa (job #1265927) | Cod sursa (job #2775651) | Cod sursa (job #2031121) | Cod sursa (job #858240) | Cod sursa (job #2696705)
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
int n, m, grad[100001], a[100001], b[100001];
bool viz[500001];
vector<int> v[100001], rasp;
void euler(int nod)
{
while(v[nod].size() > 0)
{
int muchie=v[nod].back();
v[nod].pop_back();
if(viz[muchie] == false)
{
viz[muchie]=true;
int vecin=(nod ^ a[muchie] ^ b[muchie]);
euler(vecin);
}
}
rasp.push_back(nod);
}
int main()
{
int pp;
cin>>n>>m;
for(int i=1; i<=m; i++)
{
cin>>a[i]>>b[i];
v[a[i]].push_back(i);
v[b[i]].push_back(i);
grad[a[i]]++;
grad[b[i]]++;
}
pp=0;
for(int i=1; i<=n && pp==0; i++)
{
if(grad[i]%2!=0)
pp=1;
}
if(pp==1)
cout<<-1;
else
{
euler(1);
for(int i=rasp.size()-1; i>0; i--)
cout<<rasp[i]<<" ";
}
return 0;
}