Pagini recente » Diferente pentru happy-coding-2007/solutii intre reviziile 45 si 44 | Cod sursa (job #1217526) | Cod sursa (job #1238437) | Cod sursa (job #1196746) | Cod sursa (job #3339774)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
const int NMAX = 100000, MMAX = 500000;
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;
}