Pagini recente » Cod sursa (job #2520276) | Cod sursa (job #1926726) | Cod sursa (job #1543355) | Cod sursa (job #1005102) | Cod sursa (job #2680911)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector<pair <int, int> > v[100005];
int sol[500005], n, m, i, x, y, p, q, k;
bool viz[500005];
void euler(int nod)
{
while (!v[nod].empty())
{
p = v[nod].back().second;
q = v[nod].back().first;
v[nod].pop_back();
if (!viz[p])
{
viz[p] = 1;
euler(q);
}
}
sol[++k] = nod;
}
int main()
{
f >> n >> m;
for (i = 1; i <= m; i++)
{
f >> x >> y;
v[x].push_back({ y, i });
v[y].push_back({ x, i });
}
for (i = 1; i <= n; i++)
if (v[i].size() % 2 == 1)
{
g << -1;
return 0;
};
euler(1);
for (i = 1; i < k; i++)
g << sol[i] << ' ';
}