Pagini recente » Cod sursa (job #1830157) | Cod sursa (job #665873) | Cod sursa (job #2709417) | Cod sursa (job #913779) | Cod sursa (job #2692097)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
vector<pair<int, int> > edge[100005];
vector<int> ans;
bitset<500005> viz;
void DFS(int nod)
{
while (!edge[nod].empty())
{
pair<int, int> nac = edge[nod].back();
edge[nod].pop_back();
if (!viz[nac.second])
{
viz[nac.second] = 1;
DFS(nac.first);
}
}
ans.push_back(nod);
}
int main()
{
int x, y;
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
fin >> x >> y;
edge[x].push_back({ y,i });
edge[y].push_back({ x,i });
}
for(int i = 1; i <= n; i++)
if (edge[i].size() & 1)
{
fout << "-1\n";
return 0;
}
DFS(1);
ans.pop_back();
for (int i : ans)
fout << i << " ";
//fout << '\n';
fin.close();
fout.close();
return 0;
}