Pagini recente » Cod sursa (job #2478538) | Cod sursa (job #95149) | Cod sursa (job #2282907) | Cod sursa (job #40020) | Cod sursa (job #1379772)
#include <cstdio>
#include <vector>
#define DMAX 100004
using namespace std;
FILE*fin=fopen("ciclueuler.in", "r");
FILE*fout=fopen("ciclueuler.out", "w");
int n, m;
struct nod
{
vector <int> vecin;
vector <int> muchie;
}
Nod[DMAX];
bool uzm[5*DMAX];
int C[5*DMAX], nrm;
void citire();
void euler();
void ciclu(int);
void afisare();
int main()
{
citire();
euler();
return 0;
}
void citire()
{
int i, x, y;
fscanf(fin, "%d %d", &n, &m);
for(i=1;i<=m;++i)
{
fscanf(fin, "%d %d", &x, &y);
Nod[x].vecin.push_back(y); Nod[x].muchie.push_back(i);
Nod[y].vecin.push_back(x); Nod[y].muchie.push_back(i);
}
}
void euler()
{
int i;
ciclu(1);
if(C[1]!=1)
{
fprintf(fout, "-1\n");
return;
}
afisare();
}
void ciclu(int k)
{
int i, lg;
lg=Nod[k].muchie.size();
for(i=0;i<lg;++i)
if(!uzm[Nod[k].muchie[i]])
{
uzm[Nod[k].muchie[i]]=1;
ciclu(Nod[k].vecin[i]);
}
C[++nrm]=k;
}
void afisare()
{
int i;
for(i=1;i<nrm;++i)
fprintf(fout, "%d ", C[i]);
fprintf(fout, "\n");
}