Pagini recente » Cod sursa (job #2856219) | Cod sursa (job #2608201) | Cod sursa (job #899301) | Cod sursa (job #2038706) | Cod sursa (job #2375259)
#include <bits/stdc++.h>
#define N 100001
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<int> v[N],sol;
stack<int> s;
int n;
void sterge_muchie(int a,int b)
{
int i;
for(i=0;i<v[a].size();i++)
if(v[a][i]==b)
v[a].erase(v[a].begin()+i);
for(i=0;i<v[b].size();i++)
if(v[b][i]==a)
v[b].erase(v[b].begin()+i);
}
void euler(int nod)
{
int u,vf,i;
bool ok;
s.push(nod);
while(!s.empty())
{
u=s.top();
ok=true;
if(v[u].size()!=0)
{
vf=v[u][0];
sterge_muchie(u,vf);
s.push(vf);
}
else
{
s.pop();
sol.push_back(u);
}
}
}
int main()
{
int i,a,b,m;
fin>>n>>m;
while(fin>>a>>b)
{
v[a].push_back(b);
v[b].push_back(a);
}
euler(1);
if(sol.size()!=m+1)
fout<<-1;
else
for(i=0;i<sol.size()-1;i++)
fout<<sol[i]<<" ";
return 0;
}