Pagini recente » Cod sursa (job #2047215) | Cod sursa (job #2955631) | Cod sursa (job #1257926) | Cod sursa (job #602244) | Cod sursa (job #1027672)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream o("ciclueuler.out");
vector <int> G[100008];
vector <int> d;
int gr[100008];
int n,m;
int ins(int v1,int v2)
{
unsigned int i;
for(i=0; i<G[v1].size(); i++)
{
if(G[v1][i]==v2)
return 0;
}
G[v1].push_back(v2);
gr[v1]++;
return 1;
}
void cit()
{
int i,v1,v2;
in>>n>>m;
for(i=1; i<=m; i++)
{
in>>v1>>v2;
if(v1!=v2)
ins(v1,v2);
ins(v2,v1);
}
}
int verifica()
{
int i;
for(i=1; i<=n; i++)
{
if(gr[i]%2)
return 0;
}
return 1;
}
void muchie(int v1, int v2)
{
unsigned int i;
for(i=0; i<G[v1].size(); i++)
if(G[v1][i]==v2)
G[v1].erase(G[v1].begin()+i,G[v1].begin()+i);
for(i=0; i<G[v2].size(); i++)
if(G[v2][i]==v1)
G[v2].erase(G[v2].begin()+i,G[v2].begin()+i);
}
void euler(int v)
{
int i;
for(i=G[v].size()-1; i>=0; i--)
{
muchie(v, G[v][i]);
euler(G[v][i]);
}
d.push_back(v);
}
void afis()
{
unsigned int i;
for(i=0;i<d.size();i++)
{
o<<d[i]<<' ';
}
o<<'\n';
o.close();
}
int main()
{
cit();
if(!verifica())
{
o<<-1<<'\n';
return 0;
}
d.push_back(1);
euler(1);
return 0;
}