Pagini recente » Cod sursa (job #2274113) | Cod sursa (job #1588099) | Cod sursa (job #1824089) | Cod sursa (job #2867736) | Cod sursa (job #1209386)
#include <fstream>
#include <vector>
#define MX 100001
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct muc
{
int a,b;
};
int n,m;
vector<muc*> v[MX];
vector<int> sol;
void citire()
{
int i,x,y;
muc* mm;
fin>>n>>m;
for(i=1; i<=m; i++)
{
fin>>x>>y;
mm = new muc;
mm->a = x;
mm->b = y;
v[x].push_back(mm);
v[y].push_back(mm);
}
}
inline void DFS(int i)
{
muc* u;
int j;
while(!v[i].empty())
{
u = v[i].back();
v[i].pop_back();
if(!u->a) delete u;
else
{
if(u->a != i) j = u->a;
else j = u->b;
u->a = u->b = 0;
DFS(j);
}
}
if(v[i].empty())
{
sol.push_back(i);
}
}
int main()
{
bool ok;
citire();
DFS(1);
if(sol.front() == sol.back()) ok = 1;
else ok = 0;
sol.pop_back();
if(!ok) fout<<-1;
else
{
vector<int>::iterator it;
for(it=sol.begin(); it!=sol.end(); it++)
{
fout<<*it<<' ';
}
}
fin.close(); fout.close();
return 0;
}