Pagini recente » Cod sursa (job #1317584) | Cod sursa (job #1189347) | Cod sursa (job #1847432) | Cod sursa (job #2087481) | Cod sursa (job #2326488)
#include <iostream>
#include <bitset>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
bitset<1000>viz;
int n, m, from, to, grad;
vector<int>graph[100005];
vector<pair<int,int> >muchii;
vector<int>rez;
stack<int>s;
//void verificare_conex(int ind)
//{
// for (auto &v:graph[ind])
// {
// if (viz[v]==0)
// {
// viz[v]=1;
// int nod1=muchii[v].first, nod2=muchii[v].second;
// if (nod1!=ind)
// {
// verificare_conex(nod1);
// }
// else
// {
// verificare_conex(nod2);
// }
//
// }
// }
//}
//
//void gradee()
//{
// for (int i=1; i<=n; i++)
// {
// grad=graph[i].size();
// if (grad%2==1 || grad==0 && viz)
// }
//}
void eulerian ()
{
s.push(1);
while (!s.empty())
{
int nod=s.top();
bool vecini=false;
if (graph[nod].size()==0)
{
rez.push_back(nod);
s.pop();
}
else
{
int ultim=graph[nod].back();
graph[nod].pop_back();
if (viz[ultim]==0)
{
viz[ultim]=1;
int nod1=muchii[ultim].first, nod2=muchii[ultim].second;
if (nod1!=nod)
{
s.push(nod1);
}
else
{
s.push(nod2);
}
}
}
}
}
int main()
{
f >> n >> m;
for (int i=0; i<m; i++)
{
f >> from >> to;
muchii.push_back({from,to});
graph[from].push_back(i);
graph[to].push_back(i);
}
// verificare_conex(1);
// gradee();
eulerian();
int l=rez.size();
for (int i=0; i<l-1; i++)
{
g << rez[i] <<' ';
}
return 0;
}