Pagini recente » Rating dafny25 (Anca-Florentina) | Cod sursa (job #2406988) | Cod sursa (job #2381570) | Cod sursa (job #2105665) | Cod sursa (job #1756050)
#include <iostream>
#include <fstream>
using namespace std;
int a[19001][19001], eul[500001], n, m, ind, sf, grad[19001];
ofstream g("ciclueuler.out");
void citesc()
{
ifstream f("ciclueuler.in");
int i, j, x, y;
f >> n >> m;
for(i=1; i<=m; i++)
{
f >> x >> y;
a[x][y]=1;
a[y][x]=1;
grad[x]++;
grad[y]++;
}
f.close();
}
void ciclu(int i)
{
int j, k;
for(k=1; k<=n; k++)
{
if(a[eul[i]][k]==1)
{
a[eul[i]][k]=0;
a[k][eul[i]]=0;
sf++;
for(j=sf; j>i; j--)
eul[j]=eul[j-1];
eul[++i]=k;
ciclu(i);
}
}
}
int eulerian()
{
int i;
for( i=1; i<=n; i++)
if(grad[i]%2)
return 0;
return 1;
}
void afisare()
{
for(int i=1; i<sf; i++)
g<<eul[i]<<" "; g<<endl;
g.close();
}
int main()
{
int i;
citesc();
if(eulerian())
{
eul[1]=1;
sf=1;
for(i=1; eul[i]; i++)
{
ciclu(i);
}
afisare();
}
else
g<<-1;
return 0;
}