Pagini recente » Cod sursa (job #429484) | Cod sursa (job #3267468) | Cod sursa (job #538951) | Cod sursa (job #2074204) | Cod sursa (job #3159772)
#include <bits/stdc++.h>
#define NN 100005
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
int n, m;
vector <int> v[NN];
int sz[NN];
int aux[NN];
bool ok = false;
void euler(int x, int muchii)
{
if(sz[x] == 0)
{
if(muchii == m)
ok = true;
return;
}
for(int i = 1 ; i <= n ; i++)
{
if(v[x][i] == 0)
continue;
v[x][i]--;
sz[x]--;
if(x != i)
{
v[i][x]--;
sz[i]--;
}
aux[muchii + 1] = i;
euler(i, muchii + 1);
if(ok)
return;
v[x][i]++;
sz[x]++;
if(x != i)
{
v[i][x]++;
sz[i]++;
}
aux[muchii + 1] = 0;
}
}
int main()
{
fin >> n >> m;
int a, b;
for(int i = 0 ; i <= n ; i++)
{
for(int j = 0 ; j <= n ; j++)
v[i].push_back(0);
}
for(int i = 1 ; i <= m ; i++)
{
fin >> a >> b;
if(a == b)
{
v[a][a]++;;
sz[a]++;
continue;
}
v[a][b]++;
v[b][a]++;
sz[a]++;
sz[b]++;
}
for(int i = 1 ; i <= n ; i++)
{
aux[0] = i;
euler(i, 0);
if(ok)
break;
}
for(int i = 0 ; i < m ; i++)
fout << aux[i] << " ";
return 0;
}