Pagini recente » Cod sursa (job #2729728) | Cod sursa (job #337870) | Cod sursa (job #2334651) | Cod sursa (job #2765383) | Cod sursa (job #1329994)
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <vector>
#include <stack>
using namespace std;
vector <int>g[100010];
vector <int>sol;
stack <int>v;
int n,m,m_v;
void citire()
{
freopen("ciclueuler.in","r",stdin);
scanf("%d %d",&n,&m);
int a,b;
for(int i=0; i<m; i++)
{
scanf("%d %d",&a,&b);
g[a].push_back(b);
g[b].push_back(a);
}
}
int ok=0;
int k;
void stergere(int k, int l)
{
for(int i=0; i<g[k].size(); i++)
if(g[k][i]==l)
g[k].erase(g[k].begin()+i);
}
void c_euler()
{
int x,k;
v.push(1);
while(!v.empty())
{
x=v.top();
if(!g[x].empty())
{
k=g[x][0];
v.push(g[x][0]);
stergere(g[x][0],x);
g[x].erase(g[x].begin());
m_v++;
continue;
}
sol.push_back(x);
v.pop();
}
}
void afisare()
{
freopen("ciclueuler.out","w",stdout);
for(int i=0;i<sol.size();i++)
printf("%d ",sol[i]);
}
int main()
{
citire();
c_euler();
afisare();
return 0;
}