Pagini recente » Cod sursa (job #1313679) | Cod sursa (job #158795) | Cod sursa (job #142675) | Cod sursa (job #1645587) | Cod sursa (job #3259262)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
struct muchie{
int a, b;
bool del=0;
}edge[500005];
vector <int> matad[100005];
vector <int> rez;
int urmatoareaMuchie(int node)
{
while(matad[node].size()!=0 && edge[matad[node].back()].del==1)
matad[node].pop_back();
if(matad[node].size()!=0)
{
edge[matad[node].back()].del=1;
int newNode=0;
if(edge[matad[node].back()].b!=node)
newNode=edge[matad[node].back()].b;
else
newNode=edge[matad[node].back()].a;
return newNode;
}
return 0;
}
void Euler(int node)
{
while(int vec=urmatoareaMuchie(node))
Euler(vec);
rez.push_back(node);
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b;
cin>>a>>b;
matad[a].push_back(i);
matad[b].push_back(i);
edge[i].a=a;
edge[i].b=b;
}
Euler(1);
if(rez.size()<1)
cout<<-1<<'\n';
else
for(int i=0;i<rez.size()-1;i++)
cout<<rez[i]<<'\n';
/*for(int i=1;i<=n;i++)
{
for(int j=0;j<matad[i].size();j++)
cout<<matad[i][j]<<" ";
cout<<'\n';
}*/
return 0;
}