Pagini recente » Cod sursa (job #2365005) | Cod sursa (job #1292657) | Cod sursa (job #693583) | Cod sursa (job #1212548) | Cod sursa (job #2562141)
#include <fstream>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int N = 100000;
const int M = 500000;
int n,m,ciclu[M],nc,nr;
struct muchie{
int x,y;
bool sters;
};
muchie vm[M];
int edg[2*M],urm[2*M],lst[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;
lst[x] = urm[p];
dfs(y);
}
ciclu[nc++] = x;
}
int main()
{
in>>n>>m;
for(int i=0;i<=n;i++){
in>>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;
}
dfs(1);
if(nc != m+1){
out<<"-1";
return 0;
}
for(int i=1;i<nc;i++)
out<<ciclu[i]<<' ';
return 0;
}