Pagini recente » Cod sursa (job #162836) | Cod sursa (job #840156) | Cod sursa (job #1749659) | Cod sursa (job #2038760) | Cod sursa (job #1729746)
#include <fstream>
#include <vector>
#include <stack>
#define NN 100001
#define MM 500001
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n1[MM],n2[MM],n,m,i,x,y,l[NN];
bool viz[MM];
vector <int> lm[MM],sol;
void Euler(int nod)
{
int i;
for(i=0;i<lm[nod].size();i++)
{
if(!viz[lm[nod][i]])
{
viz[lm[nod][i]]=true;
Euler(n1[lm[nod][i]]+n2[lm[nod][i]]-nod);
}
}
sol.push_back(nod);
}
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>n1[i]>>n2[i];
lm[n1[i]].push_back(i);
lm[n2[i]].push_back(i);
l[n1[i]]++;
l[n2[i]]++;
}
for(i=1;i<=n;i++)
if(l[i]%2) {g<<-1; return 0;}
Euler(1);
for(i=0;i<sol.size()-1;i++) g<<sol[i]<<' ';
return 0;
}