Pagini recente » Cod sursa (job #9799) | Cod sursa (job #1185904) | Cod sursa (job #2313416) | Cod sursa (job #2584000) | Cod sursa (job #2574486)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int NMAX = 1000009;
int viz[500009];
vector< pair<int,int> > Ad[NMAX];
vector<int> C;
int n,m;
void Read()
{
int i,j,x,y;
fin>>n>>m;
for(i = 1; i<=m; ++i)
{
fin>>x>>y;
Ad[x].push_back( {y,i} );
Ad[y].push_back({x,i});
}
}
void Euler(int nod)
{
int i,w,state;
for(i = 0; i<Ad[nod].size(); ++i)
{
w = Ad[nod][i].first;
state = viz[Ad[nod][i].second];
if(state == 0)
{
viz[Ad[nod][i].second] = 1;
Euler(w);
}
}
C.push_back(nod);
}
void Do()
{
int i,j;
Euler(1);
for( i = 0; i<C.size()-1; ++i)
fout<<C[i]<<" ";
}
int main()
{
Read();
for(int i = 1; i<=n; ++i)
{
if(Ad[i].size() % 2 == 1)
{
fout<<-1;
return 0;
}
}
Do();
return 0;
}