Pagini recente » Cod sursa (job #2145100) | Cod sursa (job #1871579) | Cod sursa (job #2315912) | Cod sursa (job #2782857) | Cod sursa (job #2562118)
#include <fstream>
using namespace std;
const int N = 100001;
const int M = 500001;
struct muchie {
int x, y;
bool sters;
}; muchie vm[M];
int urm[2*M], edg[2*M], lst[N], nr;
int ciclu[M+1], nc;
bool found[N];
void dfs (int x) {
muchie e;
int y;
for ( int p = lst[x]; p != 0; p = urm[p] ) {
e = vm[edg[p]];
if ( e.sters ) continue;
y = e.x + e.y - x;
vm[edg[p]].sters = true;
dfs(y);
}
ciclu[nc++] = x;
found[x] = true;
}
int main() {
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
int n, m;
fin>>n>>m;
for ( int i = 0; i < m; i++ ) {
fin>>vm[i].x>>vm[i].y;
edg[++nr] = i;
urm[nr] = lst[vm[i].x];
lst[vm[i].x] = nr;
edg[++nr] = i;
urm[nr] = lst[vm[i].y];
lst[vm[i].y] = nr;
}
ciclu[nc++] = 1;
dfs(1);
int c;
for ( c = 1; c < n && found[c]; c++ ) {}
if ( c == n )
for ( int i = 1; i < nc-1; i++ )
fout<<ciclu[i]<<" ";
else
fout<<"-1";
}