Pagini recente » Cod sursa (job #540897) | Cod sursa (job #1277134) | Cod sursa (job #2234717) | Cod sursa (job #541567) | Cod sursa (job #1132824)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("ciclueuler.in");
ofstream out ("ciclueuler.out");
vector <int> v[100001];
int sol[100001],n,m,nr;
void euler(int start)
{
int a,i,k;
a=start;
while(!v[a].empty())
{
i=v[a][0];
v[a].erase(v[a].begin());
k=0;
while(v[i][k]!=a)
k++;
v[i].erase(v[i].begin()+k);
euler(i);
}
sol[nr]=a;
nr++;
}
int main()
{
int x,y;
bool check=true;
in>>n>>m;
for(int i=0; i<m; i++)
{
in>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
for(int i=1; i<=n; i++)
{
if(v[i].size()%2!=0)
check = false;
}
if(check)
euler(1);
else out<<-1;
if(check)
for(int i=0; i<nr; i++)
{
out<<sol[i]<<" ";
}
return 0;
}