Pagini recente » Cod sursa (job #2381641) | Cod sursa (job #2382387) | Cod sursa (job #807726) | Cod sursa (job #2578503) | Cod sursa (job #2065461)
#include <fstream>
#include <stack>
#include <list>
#include <algorithm>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n, m, x, y, nod_curent, nod_vecin;
list <int> A[100005];
stack <int> S;
bool ciclu()
{
for (int i = 1; i <= n; i++)
if (A[i].size() % 2 != 0)
return false;
return true;
}
int main()
{
in >> n >> m;
for (int i = 1; i <= m; i++)
{
in >> x >> y;
A[x].push_back(y);
A[y].push_back(x);
}
if (ciclu())
{
S.push(1);
while (!S.empty())
{
nod_curent = S.top();
while (!A[nod_curent].empty())
{
nod_vecin = A[nod_curent].front();
A[nod_curent].pop_front();
A[nod_vecin].erase(find(A[nod_vecin].begin(), A[nod_vecin].end(), nod_curent));
S.push(nod_vecin);
nod_curent = nod_vecin;
}
out << S.top() << ' ';
S.pop();
}
}
else
out << -1;
return 0;
}