Pagini recente » Cod sursa (job #2233020) | Cod sursa (job #983) | Cod sursa (job #2494385) | Cod sursa (job #178132) | Cod sursa (job #1027723)
#include <fstream>
#include <vector>
#define NMAX 100100
#define MMAX 500100
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
int grad[NMAX];
bool vis[MMAX];
int x[MMAX], y[MMAX];
vector<int> g[NMAX];
inline void euler(const int &node)
{
int i;
int sizee = g[node].size();
while (sizee)
{
i = g[node][--sizee];
g[node].pop_back();
if (!vis[i]) {
vis[i] = true;
euler(x[i]+y[i]-node);
}
}
fout <<node<<' ';
}
int main()
{
int i,j;
fin>>n>>m;
for (i= 1;i<=m;++i) {
fin>>x[i]>>y[i];
g[x[i]].push_back(i);
g[y[i]].push_back(i);
++grad [x[i]];
++grad [y[i]];
}
for (j=1;j<= n;++j)
if (grad[j] & 1) {
fout << "-1\n";
return 0;
}
euler(1);
fout.close();
fin.close();
}