Pagini recente » Borderou de evaluare (job #2509098) | Cod sursa (job #148460) | Cod sursa (job #2531450) | Cod sursa (job #3353874) | Cod sursa (job #2106668)
#include <bits/stdc++.h>
#define INF 1000001
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
struct graf
{
int nod;
graf *leg;
};
int n,m,q;
int gr[100001];
bool Verif()
{
for(int i=1;i<=n;i++)
if(gr[i]%2)
return false;
return true;
}
graf *G[100001];
void add(int x,int y)
{
graf *p=new graf;
p->nod=y;
p->leg=G[x];
G[x]=p;
}
void euler(int nc)
{
for(graf *p=G[nc];p;p=p->leg)
{
if(p->nod){
int x=p->nod;
p->nod=0;
graf *r=G[x];
while(r->nod!=nc)
r=r->leg;
r->nod=0;
euler(x);
}
}
g<<nc<<' ';
}
int main()
{
f>>n>>m;
int x,y,c;
for(int i=1;i<=m;i++)
{
f>>x>>y;
add(x,y);
add(y,x);
gr[x]++;
gr[y]++;
}
if(Verif())
euler(1);
else g<<"-1";
return 0;
}