Pagini recente » Cod sursa (job #295982) | Cod sursa (job #1370153) | Cod sursa (job #2085162) | Cod sursa (job #281722) | Cod sursa (job #596765)
Cod sursa(job #596765)
#include <fstream>
#include <vector>
using namespace std;
const int N=100005,inf=1<<30;
vector<int> a[N],P[N];
int E[5*N],n;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
inline void push(int x,int y)
{
P[x].push_back(a[y].size());
P[y].push_back(a[x].size());
a[x].push_back(y);
a[y].push_back(x);
}
inline void pop(int x,int y,int p)
{
a[x][p]=a[y][P[x][p]]=0;
}
void euler(int x)
{
for (unsigned int i=0;i<a[x].size();i++)
if (a[x][i])
{
int q=a[x][i];
pop(x,q,i);
euler(q);
}
E[++E[0]]=x;
}
int main()
{
int m,x,y,i;
in>>n>>m;
while (m--)
{
in>>x>>y;
push(x,y);
}
for (i=1;i<=n;i++)
if (a[i].size() & 1)
{
out<<"-1\n";
return 0;
}
euler(1);
for (i=1;i<=E[0];i++)
out<<E[i]<<" ";
out<<"\n";
}