Pagini recente » Cod sursa (job #2647019) | Cod sursa (job #706917) | Cod sursa (job #860139) | Cod sursa (job #375939) | Cod sursa (job #2254714)
#include<iostream>
#include<fstream>
#include<stack>
#include<vector>
#include<string.h>
using namespace std;
int main(){
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n,m,i,x,y,k=0,node;
in>>n>>m;
bool viz[m+1];
vector < pair<int,int> > G[m+1];
stack <int> st;
memset(viz,0,m+1);
for(i=1;i<=m;i++){
in>>x>>y;
G[x].push_back( make_pair(y,i) );
G[y].push_back( make_pair(x,i) );
}
for(i=1;i<=n;i++)
if(G[x].size()&1){
out<<-1;
return 0;
}
st.push(1);
while(!st.empty()){
node=st.top();
while(G[node].size() && viz[G[node].back().second])
G[node].pop_back();
if(G[node].size()==0){
k++;
if(k>m) break;
out<<node<<" ";
st.pop();
}
else{
st.push(G[node].back().first);
viz[G[node].back().second]=1;
G[node].pop_back();
}
}
in.close(); out.close();
return 0;
}