Pagini recente » Cod sursa (job #2099435) | Cod sursa (job #1697372) | Cod sursa (job #2901825) | Cod sursa (job #852041) | Cod sursa (job #1837219)
#include <fstream>
#include <vector>
#include <list>
#include <stack>
#include <algorithm>
using namespace std;
int main()
{
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m;
fin>>n>>m;
vector< list<int> > Adj(n+1);
for(int i=0;i<m;++i){
int a,b;
fin>>a>>b;
Adj[a].push_back(b);
Adj[b].push_back(a);
}
bool euleri=true;
for(int i=1;euleri && i<=n;++i)
if(Adj[i].size()%2 != 0)
euleri=false;
if(!euleri) fout<<"-1\n";
else {
int kezd=1;
stack<int> st;
st.push(kezd);
while(!st.empty()){
int v = st.top();
if(Adj[v].empty()){
st.pop();
if(!st.empty())
fout<<v<<' ';
}
else{
int sz = Adj[v].front();
st.push(sz);
Adj[v].pop_front();
Adj[sz].erase( find(Adj[sz].begin(), Adj[sz].end(), v) );
}
}
}
fout<<'\n';
}