Pagini recente » Cod sursa (job #411571) | Cod sursa (job #1062981) | Cod sursa (job #3261254) | Cod sursa (job #2927018) | Cod sursa (job #1916356)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
inline void DFS (unsigned int node);
unsigned int N, M;
unsigned int u[100001], v[100001];
vector <unsigned int> G[100001];
unsigned int pos[100001];
bool seen[100001];
unsigned int i, k;
unsigned int sol[500001];
int main ()
{
fin >> N >> M;
for (i=1; i<=M; i++)
{
fin >> u[i] >> v[i];
G[u[i]].push_back(i);
G[v[i]].push_back(i);
}
for (i=1; i<=N; i++)
if (G[i].size()%2 == 1)
{
fout << -1;
return 0;
}
DFS(1);
for (i=1; i<=k-1; i++)
fout << sol[i] << ' ';
return 0;
}
inline void DFS (unsigned int node)
{
unsigned int K;
while (pos[node] < G[node].size())
{
K = G[node][pos[node]];
pos[node]++;
if (!seen[K])
{
seen[K] = 1;
DFS(u[K]+v[K]-node);
}
}
sol[++k] = node;
}