Pagini recente » Cod sursa (job #2922700) | Cod sursa (job #2786255) | Cod sursa (job #351475) | Cod sursa (job #633570) | Cod sursa (job #2350415)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("ciclueuler.in");
ofstream fo("ciclueuler.out");
const int NMAX = 1e5 + 5;
const int MMAX = 5e5 + 5;
vector < pair<int, int> > G[NMAX];
int n, m;
int deg[NMAX];
int viz[NMAX];
bool luat[MMAX];
vector <int> rez;
int main()
{
fi >> n >> m;
for (int i = 1; i <= m; i++)
{
int u, v;
fi >> u >> v;
G[u].push_back({v, i});
G[v].push_back({u, i});
deg[u]++;
deg[v]++;
}
int nod = 1, distrus = 0;
while (1)
{
viz[nod] = 1;
rez.push_back(nod);
int nxt = -1, much;
for (auto v: G[nod])
{
if (!luat[v.second] && deg[v.first] > 1)
nxt = v.first, much = v.second;
}
if (nxt == -1 || distrus >= m - 1)
break;
distrus++;
nod = nxt;
luat[much] = 1;
}
for (int i = 1; i <= n; i++)
if (!viz[i])
{
fo << -1;
return 0;
}
for (auto x: rez)
fo << x << " ";
return 0;
}