Pagini recente » Cod sursa (job #2627170) | Cod sursa (job #2716491) | Cod sursa (job #2776568) | Cod sursa (job #3151733) | Cod sursa (job #2077478)
#include <bits/stdc++.h>
using namespace std;
#define MAX 100010
#define f first
#define s second
#define mp make_pair
FILE*h=fopen("ciclueuler.in","r");
FILE*g=fopen("ciclueuler.out","w");
list<int>l[MAX];
list<int>::iterator lit;
list< pair<int,int> >r;
list< pair<int,int> >a;
list< pair<int,int> >::iterator it;
int main(){
int n,m,x,y,i,j,nr;
fscanf(h,"%d%d",&n,&m);
for (i=1;i<=m;i++){
fscanf(h,"%d%d",&x,&y);
l[x].push_back(y);
l[y].push_back(x);
}
x=1;i=1;
while (m){
j=l[i].back();
l[i].pop_back();
for (lit=l[j].begin();lit!=l[j].end();lit++)
if (*lit==i) {l[j].erase(lit);break;}
m--;
r.push_back(mp(i,j));
i=j;
if (i==x) break;
}
while (m){
nr=r.size();
for (i=0;i<nr;i++){
if (!l[i].empty()){
break;
}
}
x=i;
while (true){
j=l[i].back();
l[i].pop_back();
for (lit=l[j].begin();lit!=l[j].end();lit++)
if (*lit==i) {l[j].erase(lit);break;}
m--;
a.push_back(mp(i,j));
i=j;
if (x==i) break;
}
for (it=r.begin();it!=r.end();it++)
if ((*it).first==x) break;
while (!a.empty()) {
r.insert(it,a.back());
a.pop_back();
it--;
}
}
while (!r.empty()){
fprintf(g,"%d ",r.back().f);
r.pop_back();
}
fclose(h);
fclose(g);
return 0;
}