Pagini recente » Cod sursa (job #3165703) | Cod sursa (job #1927272) | Cod sursa (job #2555903) | Cod sursa (job #1119816) | Cod sursa (job #2332127)
#include<fstream>
#include<vector>
using namespace std;
ifstream in ("ciclueuler.in");
ofstream out ("ciclueuler.out");
int sub[100005],n,m,a,b,s,stiva[500005];
bool hz[500005];
vector<pair<int,int> > v[100005];
int main (void) {
in >> n >> m;
for (int i = 1; i <= m; i ++) {
in >> a >> b;
v[a].push_back (make_pair (b,i));
v[b].push_back (make_pair (a,i));
sub[a] ++;
sub[b] ++;
}
for (int i = 1; i <= n; i ++) {
if (sub[i] % 2 == 1) {
out << -1;
return 0;
}
}
s = 1;
stiva[s] = 1;
while (s > 0) {
int nod = stiva[s];
if (sub[nod] == 0) {
if (s > 1) {
out << nod <<" ";
}
s--;
}
else {
while (hz[v[nod].back().second] == 1) {
v[nod].pop_back();
}
int vecin = v[nod].back().first;
hz[v[nod].back().second] = 1;
v[nod].pop_back ();
stiva[++s] = vecin;
sub[nod] --;sub[vecin] --;
}
}
return 0;
}