Pagini recente » Cod sursa (job #2788958) | Cod sursa (job #2821463) | Cod sursa (job #1578387) | Cod sursa (job #1361958) | Cod sursa (job #1612150)
#include <fstream>
#include <vector>
#include <list>
#include <stack>
#define pp pair <int,int>
#define w 100000
using namespace std;
vector <pp> a[w+1];
bool viz[5*w+1];
list <int> l;
stack <int> st;
void euler(int x)
{
int i,y,m,ok=1,okk;
while (ok)
{
ok=0;okk=1;
for (i=0;i<a[x].size()&&okk;i++)
{
y=a[x][i].first;
m=a[x][i].second;
if (!viz[m])
{
ok=1;
viz[m]=1;
st.push(x);
x=y;okk=0;
}
}
}
}
int main()
{
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,i,x,y,m;
f>>n>>m;
for (i=1;i<=m;i++)
{
f>>x>>y;
a[x].push_back(make_pair(y,i));
a[y].push_back(make_pair(x,i));
}
euler(1);
while (!st.empty())
{
x=st.top();st.pop();
l.push_front(x);
euler(x);
}
typeof (l.begin()) it;
for (it=l.begin();it!=l.end();it++)
g<<*it<<' ';
g<<'\n';
f.close();
g.close();
return 0;
}