Pagini recente » Cod sursa (job #28054) | exersare1 | Cod sursa (job #258156) | Cod sursa (job #2164793) | Cod sursa (job #2734336)
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("ciclueuler.in");
ofstream out ("ciclueuler.out");
const int N = 1e5 + 1;
const int M = 5e5 + 1;
struct edge
{
int u,v;
bool vis;
};
edge e[M];
bool ok;
vector<int> v[N];
void euler(int x) {
while (v[x].size() != 0)
{
int cur = v[x].back();
v[x].pop_back();
if (e[cur].vis) continue;
e[cur].vis = 1;
int next = (x ^ e[cur].u ^ e[cur].v);
euler(next);
}
if (ok) out << x << " ";
ok = 1;
}
int main()
{
int n,m;
in >> n >> m;
for (int i = 1; i <= m; i++) {
in >> e[i].u >> e[i].v;
v[e[i].u].push_back(i);
v[e[i].v].push_back(i);
}
bool pos =1;
for (int i = 1; i <= n; i++)
{
if (v[i].size()%2)
{
pos = 0;
}
}
if (!pos) out << -1;
else euler(1);
return 0;
}