Pagini recente » Cod sursa (job #2898416) | Cod sursa (job #1737093) | Cod sursa (job #2898343) | Cod sursa (job #2386024) | Cod sursa (job #2654232)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
const int maxn = 1e5+5;
int n, m, i, x, y, rez;
vector<int> nod[maxn];
int fr[maxn];
void euler(int x) {
if(rez >= m) { return; }
int i = 0;
for(auto u : nod[x]) {
++i;
if(u == -1) { continue; }
nod[x][i-1] = -1;
int j = 0;
for(auto v : nod[u]){
++j;
if(x == v) {
nod[u][j-1] = -1;
break;
}
}
euler(u);
}
if(rez < m)
{ g << x << ' '; ++rez; }
}
int main()
{
f >> n >> m;
for(i = 1; i <= m; i ++) {
f >> x >> y;
nod[x].push_back(y);
nod[y].push_back(x);
fr[x] ++; fr[y] ++;
}
for(i = 1; i <= n; i ++) {
if(fr[i] % 2 == 1) {
g << -1; return 0;
}
}
euler(1);
f.close(); g.close();
return 0;
}