Pagini recente » Cod sursa (job #1087309) | Cod sursa (job #606171) | Cod sursa (job #816887) | Cod sursa (job #2636834) | Cod sursa (job #2838823)
#include <fstream>
#include <iostream>
#include <queue>
#include <set>
#include <vector>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
int f[500001], a[500001], b[500001], n, m;
vector <int> mc[500001];
vector <int> sol;
void euler(int nod)
{
int nod2, muchie;
while (mc[nod].size() != 0)
{
muchie = mc[nod].back();
mc[nod].pop_back();
if(f[muchie] == 0)
{
f[muchie] = 1;
if(a[muchie] == nod)
nod2 = b[muchie];
else
nod2 = a[muchie];
euler(nod2);
}
}
sol.push_back(nod);
}
int main()
{
int i;
fin >> n >> m;
for (i = 1; i<= m; i++)
{
fin >> a[i] >> b[i];
mc[a[i]].push_back(i);
mc[b[i]].push_back(i);
}
for (i = 1; i<= n; i++)
if(mc[i].size() % 2 == 1)
{
fout << "-1";
return 0;
}
euler(1);
for (i = 0; i< sol.size(); i++)
fout << sol[i] << " ";
}