Pagini recente » Cod sursa (job #399862) | Cod sursa (job #2262713) | Borderou de evaluare (job #1726659) | Rezultatele filtrării | Cod sursa (job #2722480)
#include <fstream>
#include <vector>
#include <set>
using namespace std;
ifstream cin ("ciclueuler.in");
ofstream cout ("ciclueuler.out");
const int N = 1e5 + 5;
multiset <int> s[N];
vector <int> ans;
void dfs(int nod) {
while (!s[nod].empty()) {
auto it = s[nod].begin();
int vecin = (*it);
s[nod].erase(it);
s[vecin].erase(s[vecin].find(nod));
dfs(vecin);
}
ans.push_back(nod);
}
int main() {
int n, m, x, y;
cin >> n >> m;
for (int i = 1; i <= m; ++i) {
cin >> x >> y;
s[x].insert(y);
s[y].insert(x);
}
dfs(1);
for (int i = 1; i <= n; ++i) {
if (!s[i].empty()) {
cout << -1 << '\n';
return 0;
}
}
for (auto it : ans)
cout << it << ' ';
return 0;
}