Pagini recente » Cod sursa (job #2901700) | Cod sursa (job #619827) | Cod sursa (job #735085) | Cod sursa (job #2969662) | Cod sursa (job #1801675)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m,x,y,k,ok,g[500005],viz[500005],sol[500005];
vector<int>v[500005];
void DFS(int q)
{int i;
for(i=0;i<g[q];i++)
if(viz[v[q][i]]==0){k++;viz[v[q][i]]=1;DFS(v[q][i]);}
}
void DFS1(int q)
{int i,j,z;
for(i=0;i<g[q];i++)
if(v[q][i]!=-1){z=v[q][i];
v[q][i]=-1;
for(j=0;j<g[z];j++)
if(v[z][j]==q){v[z][j]=-1;break;}
DFS1(z);
}
k++;
sol[k]=q;
}
int main()
{int i;
fin>>n>>m;
for(i=1;i<=m;i++)
{fin>>x>>y;
g[x]++;
g[y]++;
v[x].push_back(y);
v[y].push_back(x);
}
for(i=1;i<=n;i++)
{if(g[i]%2==1)ok=1;
g1[i]=g[i];
}
k=1;
viz[1]=1;
DFS(1);
if(ok==1)fout<<"-1";
else {k=0;
DFS1(1);
for(i=1;i<=m;i++)
fout<<sol[i]<<" ";
}
}