Pagini recente » Cod sursa (job #2646129) | Cod sursa (job #3039770) | Cod sursa (job #931639) | Cod sursa (job #2820971) | Cod sursa (job #2384686)
#include <bits/stdc++.h>
#define DMAX 100010
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct nume{
int node,id;
nume(int node,int id){
this->node=node;
this->id=id;
}
};
vector <nume> V[DMAX];
vector <int> sol;
bool uz[5*DMAX];
int n;
void citire();
void euler(int node);
int main()
{int i;
citire();
for(i=1;i<=n;i++)
if(V[i].size()%2)
{fout<<"-1\n";
return 0;
}
euler(1);
for(i=0;i<sol.size()-1;i++)
fout<<sol[i]<<' ';
fout<<'\n';
return 0;
}
void citire()
{int i,m,x,y;
fin>>n>>m;
for(i=1;i<=m;i++)
{fin>>x>>y;
V[x].push_back(nume(y,i));
V[y].push_back(nume(x,i));
}
}
void euler(int node)
{while(!V[node].empty())
{nume edge=V[node].back();
V[node].pop_back();
if(!uz[edge.id])
{uz[edge.id]=true;
euler(edge.node);
}
}
sol.push_back(node);
}