Pagini recente » Cod sursa (job #2853761) | Borderou de evaluare (job #2410040) | Cod sursa (job #3219415) | Cod sursa (job #3161124) | Cod sursa (job #2432923)
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <stack>
#include <algorithm>
std::ifstream fin("ciclueuler.in");
std::ofstream fout("ciclueuler.out");
std::list<int> v[100500];
int n,m;
std::stack<int> s;
int main()
{
fin>>n>>m;
for(int i=0;i<m;i++)
{
int j,k;
fin>>j>>k;
v[j].push_back(k);
v[k].push_back(j);
}
for(int i=1;i<=n;i++)
{
if(v[i].size()%2!=0)
{
fout<<"-1\n";
return 0;
}
}
s.push(1);
while(!s.empty())
{
int tp = s.top();
int x;
for(x=v[tp].front();v[x].size()!=0;)
{
v[s.top()].pop_front();
v[x].erase(find(v[x].begin(),v[x].end(),s.top()));
s.push(x);
x=v[x].front();
}
if(s.size()!=1)
fout<<s.top()<<" ";
s.pop();
}
}