Pagini recente » Cod sursa (job #3276474) | Cod sursa (job #3224360) | Cod sursa (job #2240306) | Cod sursa (job #182374) | Cod sursa (job #2298619)
#include <bits/stdc++.h>
#define NMAX 500002
using namespace std;
ifstream f ("ciclueulerian.in");
ofstream g ("ciclueulerian.out");
vector < pair <int,int> > v[NMAX*2];
bool viz[NMAX] ;
int N , M , k , x , a[NMAX] , i , y, poz = 0 ;
void ciclu(int s)
{
while (!v[s].empty())
{
int p = v[s].back().second;
int vecin = v[s].back().first;
v[s].pop_back();
if (!viz[p])
{
viz[p] = 1 ;
ciclu(vecin);
}
}
poz ++ ;
a[poz] = s;
}
int main()
{
f >> N >> M ;
for (i = 1; i <= M ; i ++)
{
f >> x >> y ;
v[x].push_back({y,i});
v[y].push_back({x,i});
}
for (i = 1 ; i <= N ; i ++)
if (v[i].size() % 2 != 0) {g << -1 << '\n'; return 0;}
ciclu(1) ;
for (i = 1 ; i < poz ; i ++)
g << a[i] << ' ' ;
return 0;
}