Pagini recente » Cod sursa (job #1641579) | Solutii preONI 2007, Runda Finala | Istoria paginii runda/r3capitusulare | Cod sursa (job #534855) | Cod sursa (job #2384746)
#include <bits/stdc++.h>
#define DMAX 100010
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct muc{
int node,id;
muc(int node,int id){
this->node=node;
this->id=id;
}
};
vector <muc> V[DMAX];
vector <int> c;
bool uz[5*DMAX];
int n;
void citire();
void euler(int node);
void verif();
int main()
{int i;
citire();
verif();
euler(1);
for(i=0;i<c.size()-1;i++)
fout<<c[i]<<' ';
fout<<'\n';
return 0;
}
void citire()
{int i,m,x,y;
fin>>n>>m;
for(i=1;i<=m;i++)
{fin>>x>>y;
V[x].push_back(muc(y,i));
V[y].push_back(muc(x,i));
}
}
void euler(int node)
{while(!V[node].empty())
{muc edge=V[node].back();
V[node].pop_back();
if(!uz[edge.id])
{uz[edge.id]=true;
euler(edge.node);
}
}
c.push_back(node);
}
void verif()
{int i;
for(i=1;i<=n;i++)
if(V[i].size()%2) {fout<<-1;exit(0);}
}