Pagini recente » Cod sursa (job #1046711) | Cod sursa (job #715691) | Cod sursa (job #1384626) | Cod sursa (job #2030922) | Cod sursa (job #2656546)
#include <fstream>
#include <vector>
#include <stack>
#define pii pair<int,int>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
int N,M,nod;
bool viz[500100];
vector <pii> v[100100];
vector <int> sol;
stack <int> st;
void bfs()
{
pii nn;
st.push(1);
while(!st.empty())
{
nod=st.top(); st.pop();
if(v[nod].size()==0) sol.push_back(nod);
else{
nn=v[nod].back();
st.push(nod);
v[nod].pop_back();
if(!viz[nn.second])
{
st.push(nn.first);
viz[nn.second]=1;
}
}
}
}
int main()
{
int fr[3]={0};
int x,y;
cin>>N>>M;
for(int i=1; i<=M; ++i)
{
cin>>x>>y;
v[x].push_back({y,i});
fr[(v[x].size()-1)%2]--;
fr[v[x].size()%2]++;
v[y].push_back({x,i});
fr[(v[y].size()-1)%2]--;
fr[v[y].size()%2]++;
}
if(fr[1]){
cout<<-1<<'\n';
return 0;
}
bfs();
sol.pop_back();
for(auto it:sol)
cout<<it<<' ';
cout<<'\n';
return 0;
}