Pagini recente » Cod sursa (job #713257) | Profil crz316 | Cod sursa (job #2757028) | test5673920 | Cod sursa (job #2492776)
#include <iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int N=100001;
const int M=5*N;
FILE*fin,*fout;
struct ajutormuchii{
int dest;
int id;
};
bool vizm[M];
bool vizn[N+5];
vector<ajutormuchii> gr[N];
int q[M];
int cnt=0;
void dfs_euler(int nod,int &cntafis){
if(vizn[nod]==0){
cnt++;
}
vizn[nod]=1;
while(gr[nod].size()){
ajutormuchii x=gr[nod].back();
gr[nod].pop_back();
if(vizm[x.id]==false){
vizm[x.id]=true;
dfs_euler(x.dest,cntafis);
}
}
q[++cntafis]=nod;
}
const int SIZE=1<<15;
char buffer[SIZE];
int point=SIZE;
inline char adv(){
if(point==SIZE){
fread(buffer,1,SIZE,fin);
point=0;
}
return buffer[point++];
}
inline int read(){
char c;
int x=0,sgn=1;
c=adv();
while(isdigit(c)==false && c!='-')
c=adv();
while(c=='-'){
sgn*=-1;
c=adv();
}
while(isdigit(c)){
x=x*10+c-'0';
c=adv();
}
return x*sgn;
}
int main()
{
int n,m;
fin=fopen("ciclueuler.in","r");
fout=fopen("ciclueuler.out","w");
n=read();
m=read();
int id=0;
for(int i=1;i<=m;i++){
int x,y;
x=read();
y=read();
++id;
gr[x].push_back({y,id});
gr[y].push_back({x,id});
}
for(int i=1;i<=n;i++){
if(gr[i].size()%2==1){
fprintf(fout,"-1\n");
return 0;
}
}
int c=0;
dfs_euler(1,c);
if(cnt==n){
for(int i=1;i<=m;i++){
fprintf(fout,"%d ",q[i]);
}
}
else{
fprintf(fout,"-1\n");
return 0;
}
return 0;
}