Pagini recente » Cod sursa (job #474104) | Cod sursa (job #1828939) | Cod sursa (job #423482) | Cod sursa (job #2525885) | Cod sursa (job #1405625)
#include <cstdio>
FILE* in=fopen("ciclueuler.in","r");
FILE* out=fopen("ciclueuler.out","w");
const int Q=100007,W=500003;
int n,m;
int lst[Q],val[2*W],nxt[2*W],nr;
bool mers[2*W];
void add(int a, int b)
{
val[++nr]=b;
nxt[nr]=lst[a];
lst[a]=nr;
}
//int stv[W];
void dfs(int x, int find)
{
if(x==find)
{
fprintf(out,"%d ",x);
return;
}
for(int p=lst[x]; p; p=nxt[p])
{
if(mers[p]==0)
{
mers[p]=1;
mers[((p+1) /2)*4-1-p]=1;
dfs(val[p],find);
break;
}
}
for(int p=lst[x]; p; p=nxt[p])
{
if(mers[p]==0)
{
mers[p]=1;
mers[((p+1) /2)*4-1-p]=1;
dfs(val[p],x);
}
}
fprintf(out,"%d ",x);
}
//int cont[Q];
int main()
{
fscanf(in,"%d%d",&n,&m);
int a,b;
for(int i=1; i<=m; i++)
{
fscanf(in,"%d%d",&a,&b);
// cont[a]++;
// cont[b]++;
add(a,b);
add(b,a);
}
// stv[++stv[0]]=1;
for(int p=lst[1]; p; p=nxt[p])
{
if(mers[p]==0)
{
mers[p]=1;
mers[((p+1) /2)*4-1-p]=1;
dfs(val[p],1);
}
}
return 0;
}