Pagini recente » Cod sursa (job #671925) | Cod sursa (job #408935) | Cod sursa (job #1738113) | Cod sursa (job #2000876) | Cod sursa (job #2570791)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cmath>
#include <string>
#include <cstring>
#define ll long long
using namespace std;
void euler(int node, vector<bool> &vis, vector<vector<pair<int, int>>> &g, vector<int> &ans) {
for(auto it : g[node]) {
if(vis[it.second])
continue;
vis[it.second] = 1;
euler(it.first, vis, g, ans);
}
ans.push_back(node);
}
int main() {
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n, m;
in >> n >> m;
vector<vector<pair<int, int>>> g(n + 1);
for(int i = 1; i <= m; i ++) {
int x, y;
in >> x >> y;
g[x].push_back({y, i});
g[y].push_back({x, i});
}
for(int i = 1; i <= n; i ++) {
if(g[i].size() % 2) {
out << -1;
return 0;
}
}
vector<bool> vis(m + 1, 0);
vector<int> ans;
euler(1, vis, g, ans);
for(auto it : ans)
out << it << " ";
return 0;
}