Pagini recente » Cod sursa (job #2396120) | Cod sursa (job #1512262) | Cod sursa (job #3247415) | Cod sursa (job #1757553) | Cod sursa (job #2637265)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<pair<int, int> > g[100005];
int n, m;
bool used[500005];
vector<int> ciclu;
void citire() {
fin >> n >> m;
while(m--) {
int x, y;
fin >> x >> y;
g[x].push_back({y, m});
g[y].push_back({x, m});
}
}
void dfs(int x) {
while(g[x].size()) {
pair<int, int> next = g[x].back();
g[x].pop_back();
if(!used[next.second]) {
used[next.second] = true;
dfs(next.first);
}
}
ciclu.push_back(x);
}
void solve() {
for(int i = 1; i <= n; i++)
if(g[i].size()%2) {
fout << -1;
return;
}
dfs(1);
}
void afis() {
ciclu.pop_back();
for(auto x: ciclu)
fout << x << ' ';
}
int main() {
citire();
solve();
afis();
}