Pagini recente » Cod sursa (job #1214627) | Cod sursa (job #1232875) | Cod sursa (job #2440843) | Cod sursa (job #2313519) | Cod sursa (job #2343025)
#include <iostream>
#include <fstream>
#include <vector>
#define N 100000
#define M 500000
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector< pair<int, int> > L[N];
int ciclu[N],n,m,k;
bool sel[M];
void euler(int x)
{ int y,j,i;
i=0;
while(i<L[x].size())
{
y=L[x][i].first; j=L[x][i].second;
if(!sel[j])
{
sel[j]=true;
euler(y);
}
else i++;
}
ciclu[++k]=x;
}
int main()
{
int i,x,y;
f>>n>>m;
for (i=1; i<=m; i++)
{
f>>x>>y;
L[x].push_back(make_pair(y,i));
L[y].push_back(make_pair(x,i));
}
int eul=1;
for (i=1; i<=n; i++)
{
if(L[i].size()%2!=0) eul=0;
}
if(eul==0) g<<"-1";
else
{
euler(1);
for (i=1; i<k; i++) g<<ciclu[i]<<" ";
}
return 0;
}