Pagini recente » Cod sursa (job #2440929) | Cod sursa (job #1547981) | Cod sursa (job #479891) | Cod sursa (job #1536082) | Cod sursa (job #1845844)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
#define NMAX 100005
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,muchii;
vector<int> G[NMAX];
stack<int> st;
void elim(int v,int nod){
int i;
for(i=0;i<G[v].size();++i)
if(G[v][i]==nod){
G[v].erase(G[v].begin()+i);
return ;
}
}
int main(){
f>>n>>m;
int i,x,y;
for(i=1;i<=m;++i){
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
for(i=1;i<=n;++i)
if(G[i].size()%2!=0){
g<<-1<<'\n';
return 0;
}
st.push(1);
while(!st.empty()){
int nod=st.top();
if(G[nod].size()==0){
++muchii;
g<<nod<<' ';
st.pop();
if(muchii>=m)
break;
}
else{
int v=G[nod].back();
G[nod].pop_back();
elim(v,nod);
st.push(v);
}
}
return 0;
}