Pagini recente » Cod sursa (job #219917) | Cod sursa (job #2242171) | Cod sursa (job #528751) | Cod sursa (job #947244) | Cod sursa (job #2537764)
#include <fstream>
#include <vector>
#include<stack>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector <pair <int,int> > G[100003];
stack <int> S;
vector <int> Ans;
bool uz[500003];
void fct( int nod);
int main()
{
int n,i,m,x,y,ok=1,id;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y;
G[x].push_back({y,i});
G[y].push_back({x,i});
}
for(i=1;i<=n;++i)
if(G[i].size()%2)
ok=0;
if(!ok) fout<<-1;
else{
S.push(1);
while(!S.empty())
{
int nod=S.top();
while(!G[x].empty()&&uz[G[x].back().second])//verific daca mai are muchii valabile
G[x].pop_back();
if(!G[x].empty())
{
y=G[x].back().first;
id=G[x].back().second;
G[x].pop_back();
if(!uz[id])
{
uz[id]=1;
S.push(y);
}
}
else
{
Ans.push_back(x);
S.pop();
}
}
for(int i=0;i<Ans.size()-1;++i)
fout<<Ans[i]<<' ';
}
return 0;
}