Pagini recente » Cod sursa (job #2648412) | Cod sursa (job #2946763) | Cod sursa (job #2875215) | Cod sursa (job #1518401) | Cod sursa (job #2692094)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
vector<pair<int, int> > edge[100001];
vector<int> ans;
bitset<100001> 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;
}