Pagini recente » Cod sursa (job #2756016) | Cod sursa (job #1675773) | Cod sursa (job #916157) | Cod sursa (job #2639275) | Cod sursa (job #2312784)
#include <fstream>
#include <vector>
#include <queue>
#define lim 500004
#define f first
#define s second
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,u,v,viz[lim],nodes[lim],k;
vector <pair <int,int> > G[lim];
queue <int> q;
void euler (int nod)
{
for (auto vec:G[nod])
{
if (viz[vec.s]==0)
{
viz[vec.s]=1;
euler(vec.f);
}
}
k++;
nodes[k]=nod;
}
int main()
{
f>>n>>m;
for (int i=1;i<=m;i++)
{
f>>u>>v;
G[u].push_back({v,i});
G[v].push_back({u,i});
}
for (int i=1;i<=n;i++)
if (G[i].size()%2==1)
{
g<<-1;
return 0;
}
euler(1);
for (int i=1;i<=k;i++) g<<nodes[i]<<' ';
f.close();
g.close();
return 0;
}