Pagini recente » Cod sursa (job #128890) | Cod sursa (job #373946) | Cod sursa (job #2947050) | Cod sursa (job #1786721) | Cod sursa (job #390168)
Cod sursa(job #390168)
#include<stdio.h>
#include<vector>
using namespace std;
vector<pair<int,int> > v[ 100010 ];
int i,j,k,l,m,n,g[ 100010 ],s[ 100010 * 5],a,b;
bool viz[ 500010 ];
void euler(){
static int k=0;
s[++k] = 1;
int x;
while(k){
x = s[ k ] ;
if(!v[x].empty())
{if(!viz[v[x].back().second])
{viz[v[x].back().second] = true;
s[++k] = v[x].back().first;
v[x].pop_back();
}
else
v[x].pop_back();
}
else
printf("%d ",s[k--]);
}
}
int main(){
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d",&n,&m);
for(i = 1 ; i <= m ; i++)
{scanf("%d %d",&a,&b);
v[a].push_back(make_pair(b,i));
v[b].push_back(make_pair(a,i));
g[a]++;
g[b]++;}
for(i = 1 ; i <= n ; i++)
if(g[i] & 1){printf("-1");
return 0;
}
euler();
return 0;}