Pagini recente » Cod sursa (job #1739537) | Cod sursa (job #2388033) | Cod sursa (job #2041035) | Cod sursa (job #2623316) | Cod sursa (job #2805971)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
#define MAXN 100005
int n, m, x, y, nc, nr, k;
vector<int> G[MAXN];
deque<int> Q;
bool ok;
void euler(int nod)
{
vector<int>::iterator it;
Q.push_back(nod);
while(!Q.empty()){
x = Q.front();
if (G[x].empty()){
Q.pop_front();
fout << x << ' ';
}else{
int i = G[x].back();
Q.push_front(i);
G[x].pop_back();
for (it=G[i].begin();it!=G[i].end();++it){
if (*it == x){
G[i].erase(it);
break;
}
}
}
}
}
bool este_euler()
{
for (int i=1;i<=n;i++){
if (G[i].size() % 2 != 0){
return false;
}
}
return true;
}
int main() {
fin >> n >> m;
for (int i=1;i<=m;i++){
fin >> x >> y;
G[x].push_back(y);
G[y].push_back(x);
}
if (!este_euler()){
fout << -1 << '\n';
return 0;
}
euler(1);
return 0;
}