Pagini recente » Cod sursa (job #3193328) | Cod sursa (job #265199) | Cod sursa (job #2320287) | Cod sursa (job #759777) | Cod sursa (job #640492)
Cod sursa(job #640492)
#include <list>
#include <fstream>
using namespace std;
ofstream g("ciclueuler.out");
list<int> v[100003];
int n,m,x,y,c[100003];
void dfs(int nod)
{
int next;
list<int>::iterator it;
while(!v[nod].empty())
{next=v[nod].front();
v[nod].pop_front();
for( it=v[next].begin();it!=v[next].end();it++)
if(*it==nod) {v[next].erase(it); break;}
dfs(next);
}
g<<nod<<" ";
}
void dfss(int nod)
{c[nod]=1; x++;
list<int>::iterator it;
for( it=v[nod].begin();it!=v[nod].end();it++)
if(!c[*it])
dfss(*it);
}
int main ()
{ifstream f("ciclueuler.in");
f>>n>>m;
while(f>>x>>y)
{v[x].push_back(y);
v[y].push_back(x);}
for(int i=1;i<=n;i++)
if(v[i].size()%2){ g<<-1; return 0;}
x=0;
dfss(1);
if(x!=n) g<<-1;
else
{x=v[1].front();
v[1].pop_front();
for(list<int>::iterator it=v[x].begin();it!=v[x].end();it++)
if(*it==1) {v[x].erase(it); break;}
dfs(x); }
f.close(); g.close();
return 0;
}