Pagini recente » Cod sursa (job #986229) | Cod sursa (job #280505) | Cod sursa (job #513491) | Cod sursa (job #1157309) | Cod sursa (job #2696708)
#include <bits/stdc++.h>
using namespace std;
//#define in cin
//#define out cout
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<int> v[100005];
int a[500005], b[500005];
bool f[500005];
vector<int> rez;
void euler(int pz)
{
while(v[pz].size())
{
int m = v[pz].back();
v[pz].pop_back();
if(f[m])
continue;
f[m] = 1;
int vecin = (pz ^ a[m] ^ b[m]);
euler(vecin);
}
rez.push_back(pz);
}
int main()
{
int n, m;
in >> n >> m;
for(int i = 1; i <= m; ++i)
{
in >> a[i] >> b[i];
v[a[i]].push_back(i);
v[b[i]].push_back(i);
}
bool ok = true;
for(int i = 1; i <= n; ++i)
{
if(v[i].size() % 2)
{
ok = false;
break;
}
}
if(ok == false)
{
out << "-1";
return 0;
}
euler(1);
rez.pop_back();
for(auto &i:rez)
out << i << " ";
return 0;
}