Pagini recente » Cod sursa (job #642004) | Cod sursa (job #1381021) | Cod sursa (job #1174153) | Cod sursa (job #1929124) | Cod sursa (job #2275770)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int maxn = 1e5+5;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n, m, i, x, y, rez;
int fr[maxn];
vector <int> lst[maxn];
inline void add(int x, int y) {
lst[x].push_back(y);
}
void euler(int p) {
//cout << "BEG: "; for(auto u : lst[2]) { cout << u << ' '; } cout << '\n';
for(auto u : lst[p])
{
if(lst[p].empty() == true) { break; }
lst[p].erase(lst[p].begin()); //cout << "THN: "; for(auto u : lst[2]) { cout << u << ' '; } cout << '\n';
int j = 0;
for(auto v : lst[u]) {
++j;
if(v == p) {
lst[u].erase(lst[u].begin() + j - 1); //cout << "fp: " << *lst[u].begin() << '\n';
break;
}
}
euler(u);
}
if(rez < m)
{
g << p << ' ';
++rez;
}
}
int main()
{
f >> n >> m;
for(i = 1; i <= m; i ++) {
f >> x >> y;
fr[x] ++; fr[y] ++;
add(x, y);
add(y, x);
}
for(i = 1; i <= n; i ++) {
if(fr[i] % 2 == 1) {
g << -1;
return 0;
}
}
/*for(auto u : lst[2]) {
cout << u << ' ';
}*/
euler(1);
f.close();
g.close();
return 0;
}