Pagini recente » Cod sursa (job #920478) | Cod sursa (job #603865) | Cod sursa (job #1639999) | Cod sursa (job #2656884) | Cod sursa (job #3215753)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
int st[500005], dr[500005], poz[100005], e[500005];
vector<int> L[100005];
bitset<500005> viz;
bool Toate_Pare()
{
for(int i = 1; i <= n; i++)
if(L[i].size() % 2 == 1) return false;
return true;
}
void DFS(int nod)
{
while (poz[nod] < L[nod].size())
{
int k = L[nod][poz[nod]++];
if (viz[k] == 0)
{
viz[k] = true;
DFS(st[k] + dr[k] - nod);
}
}
e[++m] = nod;
}
int main()
{
int i;
fin >> n >> m;
for (i = 1; i <= m; i++)
{
fin >> st[i] >> dr[i];
L[st[i]].push_back(i);
L[dr[i]].push_back(i);
}
if (Toate_Pare() == false)
{
fout << -1;
return 0;
}
m = 0;
DFS(1);
for (i = 1; i < m; i++)
fout << e[i] << " ";
return 0;
}