Pagini recente » Cod sursa (job #1948127) | Cod sursa (job #942864) | Cod sursa (job #500736) | Cod sursa (job #975110) | Cod sursa (job #869427)
Cod sursa(job #869427)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
vector <int> L[100999];
int n,m,nrsol,x[500999],y[500999],sol[500999];
bool viz[500999];
void Citire()
{
ifstream fin("graf.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;
}
int main ()
{
Citire();
if(GradePare())
{
DFS(1);
ofstream fout("ciclueuler.out");
for(int i=1; i<=nrsol; i++)
fout << sol[i] << " ";
fout << "\n";
fout.close();
}
else
{
ofstream fout("ciclueuler.out");
fout << "-1\n";
fout.close();
}
return 0;
}