Pagini recente » Cod sursa (job #1954123) | Cod sursa (job #2823461) | Cod sursa (job #753360) | Cod sursa (job #1867620) | Cod sursa (job #1629071)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int Nmax = 100001;
vector <int> lista[Nmax], coada;
int n,m=0, k=0;
bool ok=true;
void citire()
{
int x,y;
in>>n>>y;
while(in>>x>>y)
{
lista[x].push_back(y);
lista[y].push_back(x);
m++;
}
coada.push_back(1);
// out<<m+1<<'\n';
}
void sterge(int baza, int nod, int i)
{
lista[baza].erase(lista[baza].begin()+i);
for(int j=0; j<lista[nod].size(); j++)
if(lista[nod][j] == baza)
{
lista[nod].erase(lista[nod].begin()+j);
break;
}
}
void adauga(int baza, int nod)
{
lista[baza].push_back(nod);
lista[nod].push_back(baza);
}
void DFS(int baza)
{
if(baza == 1 && k==m)
{
ok=false;
for(int i=0; i<coada.size()-1; i++)
out<<coada[i]<<' ';
}
if(ok==true)
for(int i=0; i<lista[baza].size(); i++)
{
int nod=lista[baza][i];
sterge(baza, nod, i);
k++;
coada.push_back(nod);
DFS(nod);
coada.pop_back();
adauga(baza, nod);
k--;
}
}
int main ()
{
citire();
DFS(1);
return 0;
}