Pagini recente » Istoria paginii utilizator/giovani | Istoria paginii utilizator/ilcadragos | Istoria paginii runda/sim10_1 | Istoria paginii utilizator/daria_stamin | Cod sursa (job #544042)
Cod sursa(job #544042)
#include<cstdio>
#include<list>
using namespace std;
int n,m;
list <int> Graf[100001];
list <int> Q;
inline void euler(int nod)
{
list<int>::iterator it,jt;
int x;
it = Graf[nod].begin();
while( it != Graf[nod].end() )
{
x= *it;
jt = Graf[*it].begin();
while( jt != Graf[*it].end() )
{
if( *jt == nod )
{
Graf[*it].erase(jt);
break;
}
++jt;
}
Graf[nod].pop_front();
euler(x);
it = Graf[nod].begin();
}
Q.push_back(nod);
}
int main()
{
int x,y,i;
freopen("ciclueuler.in" , "r" , stdin);
freopen("ciclueuler.out" , "w" , stdout);
scanf("%d%d" , &n , &m);
for( i = 1 ; i <= m ; i++ )
{
scanf("%d%d" , &x , &y);
Graf[x].push_back(y);
Graf[y].push_back(x);
}
for( i = 1 ; i <= n ; i++ )
if( Graf[i].size() & 1 )
{
printf("-1\n");
return 0;
}
euler(1);
Q.pop_back();
list<int>::iterator it;
for( it = Q.begin() ; it != Q.end() ; ++it )
printf("%d " , *it );
return 0;
}