Pagini recente » Cod sursa (job #706249) | Cod sursa (job #2931257) | Cod sursa (job #233315) | Cod sursa (job #3182680) | Cod sursa (job #1019445)
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
FILE *f=fopen("ciclueuler.in","r");
FILE *g=fopen("ciclueuler.out","w");
vector<int>l[100005],sol;
int s[500005],i,n,m,x,y,u;
int verif()
{
int i,ok=0;
for(i=1;i<=n;i++)
if ((l[i].size())%2==1)ok=1;
if (ok==0)return 1;
else return 0;
}
void df(int i)
{
int y;
s[++u]=i;
while(u)
{
x=s[u];
if(l[x].size()!=0)
{
y=l[x].back();
l[x].pop_back();
s[++u]=y;
l[y].erase(find(l[y].begin(),l[y].end(),x));
}
else
{
u--;
sol.push_back(x);
}
}
}
int main()
{
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&x,&y);
l[x].push_back(y);
l[y].push_back(x);
}
if (verif()==0)fprintf(g,"%d",-1);
else
{
df(1);
for(i=0;i<=sol.size()-2;i++)
fprintf(g,"%d ",sol[i]);
}
fclose(g);
return 0;
}