Pagini recente » Cod sursa (job #978864) | Cod sursa (job #500962) | Cod sursa (job #866480) | Cod sursa (job #2807149) | Cod sursa (job #3339775)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
const int NMAX = 100002, MMAX = 500002;
int n;
bool sters[MMAX];
struct muchie {int x,nr;};
vector<muchie>G[NMAX];
vector<int> C;
muchie m;
void euler(int x)
{
muchie m;
while (!G[x].empty())
{
m=G[x].back();
G[x].pop_back();
if(!sters[m.nr])
{
sters[m.nr] = 1;
euler(m.x);
}
}
C.push_back(x);
}
int main()
{
int i, nrmuchii, x, y;
fin>>n>>nrmuchii;
for (i=1; i<=nrmuchii; i++)
{
fin>>x>>y;
m.x = y; m.nr = i;
G[x].push_back(m);
m.x = x;
G[y].push_back(m);
}
for (x=1; x<=n; x++)
if (G[x].size()%2)
{
{
fout<<-1<<'\n';
return 0;
}
}
for (x=1; x<=n; x++)
if(G[x].size())
{
euler(x);
break;
}
if (C.size()!=nrmuchii+1)
{
fout<<-1<<'\n';
return 0;
}
for (i=0; i<C.size()-1; i++)
fout<<C[i]<<' ';
return 0;
}