Pagini recente » Cod sursa (job #2405222) | Cod sursa (job #15606) | Cod sursa (job #2405674) | Cod sursa (job #2916788) | Cod sursa (job #2734322)
#include<vector>
#include<fstream>
#include<map>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
struct muchie
{
int x,y,folosit;
}e[500005];
vector<int>c;
int grad[100005];
vector<pair<int,int>>v[100005];
void euler(int nod){
while(v[nod].size()){
auto x= v[nod].back();
v[nod].pop_back();
if(e[x.second].folosit){
continue;
}
e[x.second].folosit=1;
euler(x.first);
}
c.push_back(nod);
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>e[i].x>>e[i].y;
v[e[i].x].push_back({e[i].y,i});
v[e[i].y].push_back({e[i].x,i});
grad[e[i].x]++;
grad[e[i].y]++;
}
for(int i=1;i<=n;i++){
if(grad[i]%2==1){
cout<<-1;
return 0;
}
}
euler(1);
if(c.size()==m+1){
c.erase(c.begin()+m);
for(auto x: c){
cout<<x<<" ";
}
}
else{
cout<<-1;
}
return 0;
}