Pagini recente » Cod sursa (job #1811169) | Cod sursa (job #2064315) | Cod sursa (job #815801) | Cod sursa (job #217951) | Cod sursa (job #2492761)
#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];
void dfs_euler(int nod,int &cntafis,int m){
for(auto x:gr[nod]){
if(vizm[x.id]==false){
vizm[x.id]=true;
dfs_euler(x.dest,cntafis,m);
}
}
if(cntafis<m){
fprintf(fout,"%d ",nod);
cntafis++;
}
}
int cnt=0;
void dfs_nod(int nod){
cnt++;
vizn[nod]=true;
for(auto x:gr[nod]){
if(!vizn[x.dest])
dfs_nod(x.dest);
}
}
int main()
{
int n,m;
fin=fopen("ciclueuler.in","r");
fout=fopen("ciclueuler.out","w");
fscanf(fin,"%d%d",&n,&m);
int id=0;
for(int i=1;i<=m;i++){
int x,y;
fscanf(fin,"%d%d",&x,&y);
++id;
gr[x].push_back({y,id});
gr[y].push_back({x,id});
}
cnt=0;
dfs_nod(1);
if(cnt!=n){
fprintf(fout,"-1\n");
return 0;
}
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,m);
return 0;
}