Pagini recente » Cod sursa (job #444414) | Cod sursa (job #781574) | Rating Runcan Paul (cenago11) | Profil M@2Te4i | Cod sursa (job #1889766)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector<int>ls[100005];
bool viz[100005],ok;
int n, m,i,j,x,y;
int sol[100005], cd;
int stiva[100005], vf;
void df(int x) {
int i, l = ls[x].size(), y;
viz[x] = 1;
for (i = 0; i < l; i++) {
y = ls[x][i];
if (viz[y] == 0)
df(y);
}
//g << 1;
}
int main() {
f >> n >> m;
while (m--) {
f >> x >> y;
ls[x].push_back(y);
ls[y].push_back(x);
}
df(1);
for (i = 1; i<= n; i++)
if (viz[i] == 0 || ls[i].size()%2==1) {
g << -1;
return 0;
}
stiva[(vf=1)] = 1;
ok = 1;
while (vf) {
x = stiva[vf];
while (ls[x].size() > 0) {
y = ls[x].front();
stiva[++vf] = y;
ls[x].erase(ls[x].begin());
ls[y].erase(find(ls[y].begin(), ls[y].end(), x));
x = y;
//g<<1;
}
//g<<'\n';
sol[++cd] = stiva[vf--];
}
for (i = 1; i <= cd; i++)
g << sol[i]<< " ";
return 0;
}