Pagini recente » Cod sursa (job #3167230) | Cod sursa (job #2820777) | Cod sursa (job #251365) | Cod sursa (job #139379) | Cod sursa (job #1373696)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
stack < int >q;
vector < int >a[1000000],sol;
int n,m,ok,x,y;
void euler(int start)
{
q.push(start);
while(q.size())
{
int nod=q.top();
if(a[nod].size())
{
int last=a[nod].back();
q.push(last);a[nod].pop_back();
a[last].erase(find (a[last].begin(),a[last].end(),nod));
}
else q.pop(),sol.push_back(nod);
}
}
int main()
{
f>>n>>m;
for(int i=1; i<=m; i++)
{
f>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
for(int i=1; i<=n; i++)
if(a[i].size()%2==1){ok=1;break;}
euler(1);
if(ok==1)g<<-1;
else for(int i=0; i<sol.size(); i++)
g<<sol[i]<<" ";
return 0;
}