Pagini recente » Cod sursa (job #2670726) | Cod sursa (job #2089248) | Cod sursa (job #1191169) | Cod sursa (job #1227977) | Cod sursa (job #2538253)
#include <fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
vector <int> lista[100001];
int st[500001],n,k=1;
void citeste()
{
int n1,n2,m,i;
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>n1>>n2;
lista[n1].push_back(n2);
lista[n2].push_back(n1);
}
}
int viz[100001],rez[500001];
int nr=0,varf;
void dfs(int nod)
{
int aux;
viz[nod]=1;
vector <int>:: iterator it;
while(lista[nod].size())
{
k++;
st[k]=aux=lista[nod].back();
lista[nod].pop_back();
vector <int>::iterator it2;
it2=find(lista[st[k]].begin(), lista[st[k]].end(),nod);
lista[st[k]].erase(it2);
nod=aux;
}
}
int main()
{
int i;
citeste();
st[1]=1;
while(k>0)
{
int elem=st[k];
dfs(elem);
while(k>0 && lista[st[k]].empty())
{
nr++;
rez[nr]=st[k];
k--;
}
}
for(i=1;i<=nr;i++)
cout<<rez[i]<<" ";
return 0;
}