Pagini recente » Cod sursa (job #2173900) | Cod sursa (job #2032936) | Cod sursa (job #2180890) | Cod sursa (job #2156545) | Cod sursa (job #1808880)
#include <fstream>
#include <vector>
using namespace std;
bool even ();
void DFS (unsigned int node);
unsigned int N, M;
unsigned int u[500001], v[500001];
vector <unsigned int> L[500001];
bool seen[500001];
unsigned int pos[500001], q[500001];
unsigned int k, K;
unsigned int i;
int main ()
{
ifstream fin ("ciclueuler.in");
fin >> N >> M;
for (i=1; i<=M; i++)
{
fin >> u[i] >> v[i];
L[u[i]].push_back(i);
L[v[i]].push_back(i);
}
fin.close();
ofstream fout ("ciclueuler.out");
if (!even())
fout << -1;
else
{
DFS(1);
for (i=1; i<k; i++)
fout << q[i] << ' ';
fout << '\n';
}
fout.close();
return 0;
}
bool even ()
{
for (i=1; i<=N; i++)
if (L[i].size()%2 != 0)
return 0;
return 1;
}
void DFS (unsigned int node)
{
while (pos[node] < L[node].size())
{
K = L[node][pos[node]];
pos[node]++;
if (!seen[K])
{
seen[K] = 1;
DFS(u[K]+v[K]-node);
}
}
q[++k] = node;
}