Pagini recente » Cod sursa (job #3201248) | Cod sursa (job #364988) | Cod sursa (job #1689697) | Cod sursa (job #2294137) | Cod sursa (job #1789184)
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
vector <pair <int,int> > g[100010];
int n,m,dad[500010],sol[500010];
bool vc[500010],viz[500010];
deque <int >q;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
void afisare(int n)
{
int i;
//cout<<i
for(i=1; i<=n; i++)
fout<<sol[i]<<" ";
}
void solve ()
{
int nrm,pp,nod,elem,a,i,k=0;
q.push_back(1);
nrm=0;
pp=0;
while(!q.empty())
{
nod=q.back();
//cout<<"\n"<<nod<<" ";
while(!g[nod].empty()&&vc[g[nod].back().second]!=0)
g[nod].pop_back();
if(!g[nod].empty())
{
vc[g[nod].back().second]=1;
q.push_back(g[nod].back().first);
g[nod].pop_back();
}
else
{
if(q.size()>1)
sol[++k]=nod;
q.pop_back();
}
}
//cout<<k<<" ";
if(k==m)
afisare(k);
else
fout<<"-1";
}
int main()
{
int i,a,b,pp=0;
fin>>n>>m;
for(i=1; i<=m; i++)
{
fin>>a>>b;
g[a].push_back(make_pair(b,i));
g[b].push_back(make_pair(a,i));
viz[a]=1;
viz[b]=1;
}
for(i=1; i<=n; i++)
if(viz[i]==0)
pp=-1;
if(pp==0)
solve();
else
fout<<pp;
return 0;
}