Pagini recente » Cod sursa (job #2413902) | Cod sursa (job #61223) | Cod sursa (job #429387) | Cod sursa (job #2937416) | Cod sursa (job #1027707)
#include <fstream>
#include <vector>
#define MAXN 100100
#define MAXM MAXN*5
#define IN "ciclueuler.in"
#define OUT "ciclueuler.out"
using namespace std;
ifstream fin(IN);
ofstream fout(OUT);
int n,m;
int grad[MAXN];
bool vis[MAXM];
int x[MAXM],y[MAXM];
vector<int> g[MAXN];
void euler(const int &nod)
{
int i
int cate=g[nod].size();
while (cate)
{
i=g[nod][--cate];
g[nod].pop_back();
if (!vis[i])
{
vis[i] = true;
euler(x[i] + y[i] - nod);
}
}
fout<<nod<<' ';
}
int main()
{
int i
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]];
}
fin.close();
for (i=1;i<=n;++i)
if (grad[i]&1)
{
fout<<"-1\n";
fout.close();
return 0;
}
euler(1);
fout.close();
}