Pagini recente » Cod sursa (job #2625782) | Cod sursa (job #1085785) | Cod sursa (job #2217923) | Cod sursa (job #1974922) | Cod sursa (job #1789179)
#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];
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;
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));
}
solve();
return 0;
}