Pagini recente » Cod sursa (job #2112155) | Cod sursa (job #2306750) | Cod sursa (job #1471438) | Cod sursa (job #470622) | Cod sursa (job #2123800)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
const int NodMax = 100005;
const int MuchMax = 500005;
vector < int > G[NodMax];
stack < int > st;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct muchie
{
int n1, n2;
bool sters = false;
}v[MuchMax];
int N, M;
void Read()
{
fin >> N >> M;
for(int i=1; i<=M; ++i)
{
fin >> v[i].n1 >> v[i].n2;
G[v[i].n1].push_back(i);
G[v[i].n2].push_back(i);
}
}
void Euler()
{
st.push(1);
while(!st.empty())
{
int nod = st.top();
if(G[nod].size())
{
int next = G[nod].back();
G[nod].pop_back();
if(v[next].sters == true)
continue;
v[next].sters = true;
if(v[next].n1 == nod)
st.push(v[next].n2);
else
st.push(v[next].n1);
}
else
{
fout << nod << " ";
st.pop();
}
}
}
int main()
{
Read();
for(int i=1; i<=N; ++i)
{
if(G[i].size() % 2 == 1)
{
cout << -1 << "\n";
return 0;
}
}
Euler();
return 0;
}