Pagini recente » Cod sursa (job #1733187) | Cod sursa (job #1734246) | Cod sursa (job #1798035) | Cod sursa (job #973706) | Cod sursa (job #798386)
Cod sursa(job #798386)
#include <fstream>
#include <list>
#include <vector>
#define pb push_back
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> a[1001];
list <int> q;
int n,m,i,x,y;
void euler (int x)
{
int nr=0;
vector <int> :: iterator it;
q.pb(x);
while (!q.empty())
{
x=q.front();
if (a[x].empty())
{
q.pop_front();
if (nr<m) g<<x<<' ';
nr++;
}
else
{
int i=a[x].back();
q.push_front(a[x].back());
a[x].pop_back();
for (it=a[i].begin();it!=a[i].end();it++)
if (*it==x) {a[i].erase(it); break;}
}
}
}
int main()
{
f>>n>>m;
for (i=1;i<=m;i++)
{
f>>x>>y;
a[x].pb(y);
a[y].pb(x);
}
for (i=1;i<=n;i++)
if (a[i].size()%2!=0) { g<<"-1"; return 0;}
euler(1);
return 0;
}