Pagini recente » Cod sursa (job #2791819) | Cod sursa (job #545486) | Cod sursa (job #3231919) | Cod sursa (job #1136169) | Cod sursa (job #2696696)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<int>v[100001];
int a[500001],b[500001],viz[500001];
int n,m,ok=0;
void citire(){
in>>n>>m;
for(int i=1;i<=m;i++){
in>>a[i]>>b[i];
v[a[i]].push_back(i);
v[b[i]].push_back(i);
}
}
int euler(int poz){
while(v[poz].size()!=0){
int curent=v[poz].size()-1;
curent=v[poz][curent];
v[poz].pop_back();
if(viz[curent])
continue;
viz[curent]=1;
int vecin=(poz^a[curent]^b[curent]);
euler(vecin);
}
if(ok)
out<<poz<<" ";
ok=1;
}
int main(){
citire();
for(int i=1;i<=n;i++){
if(v[i].size()%2==1){
out<<-1;
return 0;
}
}
euler(1);
return 0;
}