Pagini recente » Cod sursa (job #2092295) | Cod sursa (job #2492602) | Cod sursa (job #967441) | Cod sursa (job #109451) | Cod sursa (job #2543293)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100005;
const int MMAX = 500005;
int N, M;
vector < pair <int, int> > graph[NMAX];
bool usedEdge[NMAX];
int deg[NMAX];
vector <int> answer;
void dfs(int node)
{
while (!graph[node].empty())
{
int nextNode = graph[node].back().first;
int indEdge = graph[node].back().second;
graph[node].pop_back();
if (usedEdge[indEdge] == false)
{
usedEdge[indEdge] = true;
dfs(nextNode);
}
}
answer.push_back(node);
}
int main()
{
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
fin >> N >> M;
for (int i = 1;i <= M;++i)
{
int u, v;
fin >> u >> v;
graph[u].push_back(make_pair(v, i));
graph[v].push_back(make_pair(u, i));
++deg[u];
++deg[v];
}
for (int i = 1;i <= N;++i)
if (deg[i] % 2)
{
fout << "-1\n";
return 0;
}
dfs(1);
answer.pop_back();
for (auto& i : answer)
fout << i << " ";
fin.close();
fout.close();
return 0;
}