Pagini recente » Cod sursa (job #2209314) | Cod sursa (job #673089) | Cod sursa (job #2000177) | Cod sursa (job #2604889) | Cod sursa (job #2107631)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n ,m;
vector<int>af;
struct nod{
int info;
nod *next;}*L[1000001];
void add(int x , int y)
{
nod *aux= new nod;
aux ->info = y;
aux->next = L[x];
L[x]=aux;
}
void sterg(int k , int i)
{
nod *p,*q;
if(L[k]->info==i)
{
p=L[k];
L[k]=L[k]->next;
delete p;
return ;
}
for(p=L[k];p->info!=i;p=p->next)
q=p;
q->next=p->next;
delete p;
}
void euler(int node)
{
while(L[node])
{
int w = L[node]->info;
sterg(node,w);
sterg(w,node);
euler(w);
}
af.push_back(node);
}
int main()
{
in >> n >> m ;
for(int i =1; i<=m ;++i)
{
int x, y;
in>>x>>y;
add(x,y);
add(y,x);
}
euler(1);
for (int i = 0 ; i<af.size()-1;++i)
out<<af[i]<<" ";
return 0;
}
//euler (nod v)
// cat timp (v are vecini)
// w = un vecin aleator al lui v
// sterge_muchie (v, w)
//euler (w)
//sfarsit cat timp
//adauga v la ciclu