Pagini recente » Cod sursa (job #2446384) | Cod sursa (job #2422662) | Cod sursa (job #1891902) | Cod sursa (job #2689173) | Cod sursa (job #2696694)
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
int a[500001],b[500001];
vector<int> v[100001],ans;
bool viz[500001];
int euler (int pz)
{
while (v[pz].size() != 0)
{
int muchia_curenta = v[pz].back();
v[pz].pop_back();
if(viz[muchia_curenta])
continue;
viz[muchia_curenta]=1;
int vecin;
if(a[muchia_curenta] == pz)
vecin = b[muchia_curenta];
else
vecin = a[muchia_curenta];
euler(vecin);
}
ans.push_back(pz);
}
int main () {
int n,m;
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);
}
int ok=1;
for(int i=1;i<=n;i++){
if(v[i].size()%2==1)
ok=0;
}
if(ok==0)
cout<<-1;
else{
euler(1);
for(int i=0;i<ans.size()-1;i++)
cout<<ans[i]<<" ";
}
}