Pagini recente » Cod sursa (job #2020045) | Diferente pentru olimpici intre reviziile 130 si 131 | Cod sursa (job #763744) | Istoria paginii utilizator/mihaicosor | Cod sursa (job #1979743)
#include <fstream>
#include <vector>
#define NMAX 100010
#define MMAX 500010
using namespace std;
ofstream fout("ciclueuler.out");
ifstream fin("ciclueuler.in");
vector <pair<int,int> > v[NMAX];
int viz[MMAX], a[NMAX], n, m, x, y;
void euler(int nod)
{
int lg = v[nod].size();
for(int i = 0; i < lg; ++i){
if(viz[v[nod][i].second] == 0){
viz[v[nod][i].second] = 1;
euler(v[nod][i].first);
}
}
fout << nod << ' ';
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= m; ++i){
fin >> x >> y;
v[x].push_back({y,i});
v[y].push_back({x,i});
a[x]++;
a[y]++;
}
for(int i = 1; i <= n; ++i){
if(a[i]%2 == 1){
fout << -1;
return 0;
}
}
euler(1);
return 0;
}