Pagini recente » Cod sursa (job #1141254) | Cod sursa (job #1958001) | Cod sursa (job #1794870) | Cod sursa (job #1984933) | Cod sursa (job #2343027)
#include <iostream>
#include <fstream>
#include <vector>
#define N 100003
#define M 500003
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector< 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;
}