Pagini recente » Cod sursa (job #290413) | Cod sursa (job #3313791)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m, X[500001], Y[500001], grad[100001], viz[500001];
int e[100001], len;
vector <int> G[500001], L[100001];
void Euler(int k)
{
for (auto i : L[k])
if (viz[i] == 0)
{
viz[i] = 1;
Euler(X[i] + Y[i] - k);
}
e[++len] = k;
}
int main()
{
int p, i, j;
fin >> n >> m;
for (p = 1 ; p <= m ; p++)
{
fin >> i >> j;
++grad[i]; ++grad[j];
X[p] = i; Y[p] = j;
L[i].push_back(p);
L[j].push_back(p);
}
for (i = 1 ; i <= n ; i++)
if (grad[i] != 0 && grad[i] % 2 != 0)
fout << -1;
for (i = 1 ; i <= n && grad[i] == 0 ; i++)
;
Euler(i);
for (i = 1 ; i <= len ; i++)
fout << e[i] << " ";
}