Pagini recente » Cod sursa (job #1901429) | Cod sursa (job #2811308) | Cod sursa (job #2903753) | Cod sursa (job #421219) | Cod sursa (job #869407)
Cod sursa(job #869407)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
vector <int> L[100005];
int n,m,nrsol,x[500005],y[500005],sol[100005];
bool viz[100005];
void Citire()
{
ifstream fin("ciclueuler.in");
fin >> n >> m;
for(int i=1; i<=m; i++)
{
fin >> x[i] >> y[i];
L[x[i]].push_back(i);
L[y[i]].push_back(i);
}
fin.close();
}
bool GradePare()
{
for(int i=1; i<=n; i++)
if(L[i].size() % 2)
return false;
return true;
}
void DFS(int k)
{
vector<int>::iterator it;
for(it=L[k].begin(); it!=L[k].end(); it++)
if(!viz[*it])
{
viz[*it] = true;
DFS(x[*it] + y[*it] - k);
}
sol[++nrsol] = k;
}
void Afisare(bool ok)
{
ofstream fout("ciclueuler.out");
if(ok)
{
for(int i=1; i<=nrsol; i++)
fout << sol[i] << " ";
fout << "\n";
}
else
fout << "-1\n";
fout.close();
}
int main ()
{
Citire();
DFS(1);
Afisare(GradePare());
return 0;
}