Pagini recente » Cod sursa (job #309116) | Arhiva de probleme | Cod sursa (job #2607475) | Arhiva de probleme | Cod sursa (job #434180)
Cod sursa(job #434180)
#include <stdio.h>
#include <vector>
#define IN "ciclueuler.in"
#define OUT "ciclueuler.out"
#define L 100005
#define pb push_back
using namespace std;
int a, b, n, m;
vector <int> V[L];
vector <int> :: iterator it;
int st[L], grad[L];
int sf;
void citire()
{
scanf ("%d %d", &n, &m);
for (int i=0;i<m;i++)
{
scanf ("%d %d", &a, &b);
V[a].pb(b);
V[b].pb(a);
grad[a]++;
grad[b]++;
}
}
void solve()
{
int T, T1;
for (int i=1;i<=n;i++)
if (grad[a]%2==1)
{
printf("-1\n");
return ;
}
st[++sf]=1;
while (sf)
{
T=st[sf];
if (V[T].size())
{
T1=V[T].back();
V[T].pop_back();
for (it=V[T1].begin(); it!=V[T1].end() && *it!=T ;it++);
V[T1].erase(it);
st[++sf]=T1;
}
else
printf("%d ",st[sf--]);
}
printf("\n");
}
int main()
{
freopen (IN ,"r", stdin);
freopen (OUT , "w", stdout);
citire();
solve();
}