Pagini recente » Cod sursa (job #455739) | Cod sursa (job #2466374) | Cod sursa (job #2183599) | Cod sursa (job #707099) | Cod sursa (job #1660296)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 100005
vector<int> V[MAX];
int Vect[MAX];
void DFS(int node);
fstream f("ciclueuler.in",ios::in);
ofstream g("ciclueuler.out");
int main()
{
int N,M,i,x,y;
f>>N>>M;
for(i=0;i<M;++i)
{
f>>x>>y;
if(x==y)
++Vect[x];
else
V[x].push_back(y), V[y].push_back(x);
}
for(i=1;i<=N;++i)
if(V[i].size()%2!=0)
{
g<<-1;
return 0;
}
DFS(1);
return 0;
}
void DFS(int node)
{
if(V[node].empty())return;
int i;
vector<int>::iterator it;
g<<node<<" ";
for(i=1;i<=Vect[node];++i)g<<node<<" ";
Vect[node]=0;
i = V[node][V[node].size()-1];
V[node].pop_back();
for(it=V[i].begin();it<V[i].end();++it)
if(*it==node)
{
V[i].erase(it);
break;
}
DFS(i);
}