Pagini recente » Cod sursa (job #1865332) | Cod sursa (job #2349941) | Cod sursa (job #930501) | Cod sursa (job #1793996) | Cod sursa (job #910157)
Cod sursa(job #910157)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int N=100001;
struct pereche{
int vf,poz;
}aux;
vector<pereche> a[N];
int n,nr,c[500004],m;
void citire();
void euler(int x);
int main()
{
citire();
int i;
euler(1);
if(nr-1==m)
{
for(i=1;i<=nr;i++)
out<<c[i]<<" ";
}
else out<<"-1";
return 0;
}
void citire()
{
int x,y,q,i;
in>>n>>m;
for(i=1;i<=m;i++)
{
in>>x>>y;
if(x!=y){
aux.vf=y;
aux.poz=a[y].size();
a[x].push_back(aux);
aux.vf=x;
aux.poz=a[x].size()-1;
a[y].push_back(aux);
}
else
{
aux.vf=y;
aux.poz=a[y].size();
a[x].push_back(aux);
}
}
}
void euler(int x)
{
int y,p;
for(int i=0;i<a[x].size();i++)
{
y=a[x][i].vf;
if(a[x][i].poz!=-1){
p=a[x][i].poz;
a[x][i].poz=-1;
a[y][p].poz=-1;
euler(y);
}
}
c[++nr]=x;
}