Pagini recente » Cod sursa (job #552667) | Cod sursa (job #156872) | Cod sursa (job #3241540) | Cod sursa (job #1563550) | Cod sursa (job #1916279)
#include <fstream>
#include <vector>
#include <stack>
#define NMAX 100010
#define MMAX 100010
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct muchie
{
int a, b;
};
int n, m, nr;
vector<int> A[NMAX], sol;
stack<int> S;
bool viz[MMAX];
muchie M[MMAX];
int main()
{
int a, b, i, nod, urm, aux;
fin >> n >> m;
for (i = 1; i <= m; i++)
{
fin >> a >> b;
A[a].push_back(i);
A[b].push_back(i);
M[i].a = a;
M[i].b = b;
}
S.push(1);
while (!S.empty())
{
nod = S.top();
if (!A[nod].empty())
{
aux = A[nod].back();
A[nod].pop_back();
if (!viz[aux])
{
viz[aux] = 1;
nr++;
if (nod == M[aux].a)
urm = M[aux].b;
else
urm = M[aux].a;
S.push(urm);
}
}
else
{
S.pop();
sol.push_back(nod);
}
}
if (nr < m)
fout << -1;
else
{
for (i = 0; i < sol.size() - 1; i++)
fout << sol[i] << ' ';
}
fout << '\n';
fout.close();
return 0;
}