Pagini recente » Cod sursa (job #2342319) | Cod sursa (job #2095070) | Cod sursa (job #2611810) | Cod sursa (job #2132905) | Cod sursa (job #2312782)
#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];
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);
}
}
q.push(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);
while (!q.empty())
{
g<<q.front()<<' ';
q.pop();
}
f.close();
g.close();
return 0;
}