Pagini recente » Cod sursa (job #1282294) | Cod sursa (job #2352432) | Cod sursa (job #2936025) | Cod sursa (job #946288) | Cod sursa (job #2562132)
#include <fstream>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int N=100001;
const int M=500001;
int lst[N],urm[2*M],edges[2*M],ciclu[M],nc,nr,n,m,ok;
struct muchie
{
int x,y;
bool sters;
};
muchie vm[M];
void dfs(int x)
{
muchie e;
int y;
for(int p=lst[x];p!=0;p=urm[p])
{
e=vm[edges[p]];
if(e.sters) continue;
y=e.x+e.y-x;
vm[edges[p]].sters=true;
lst[x]=urm[p];
dfs(y);
}
ciclu[nc++]=x;
}
int main()
{
in>>n>>m;
for(int i=0;i<m;i++)
{
in>>vm[i].x>>vm[i].y;
edges[++nr]=i;
urm[nr]=lst[vm[i].x];
lst[vm[i].x]=nr;
edges[++nr]=i;
urm[nr]=lst[vm[i].y];
lst[vm[i].y]=nr;
}
dfs(1);
for(int i=0;i<m;i++) if(vm[i].sters==false) {ok=1;break;}
if(ok==1) out <<"nu exista";
else{
for(int i=0;i<nc;i++) out<<ciclu[i]<<" ";
}
return 0;
}