Pagini recente » Cod sursa (job #1268254) | Cod sursa (job #2545520) | Cod sursa (job #867695) | Cod sursa (job #2165097) | Cod sursa (job #2979970)
#include <iostream>
#include <fstream>
#include <stack>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector<pair<int,int> > v[100005];
vector<int> a;
int viz[500005];
int n,m,b,t;
int okey(int n)
{
for(int i=1;i<=n;i++)
if(v[i].size()%2==1)
return 0;
return 1;
}
void aurel(int node)
{
while(!v[node].empty())
{
auto next_node=v[node].back();
v[node].pop_back();
if(!viz[next_node.second])
{
viz[next_node.second]=1;
aurel(next_node.first);
}
}
a.push_back(node);
}
int main()
{
int i;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>b>>t;
v[t].push_back({b,i});
v[b].push_back({t,i});
}
if(!okey(n))
{
g<<-1;
}
else
{
aurel(1);
//stergem nodul final
a.pop_back();
for(int i=0;i<(int)a.size();i++)
{
g<<a[i]<<" ";
}
}
return 0;
}