Pagini recente » Cod sursa (job #860798) | Cod sursa (job #1473935) | Cod sursa (job #2624661) | Cod sursa (job #2978404) | Cod sursa (job #2562313)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=100006;
const int M=500006;
int n,m;
vector<int>ind[N];
int f[M],s[M];
bool viz[M];
int ans[M],vf=0;
int k;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
void dfs(int nod) {
while(!ind[nod].empty()) {
k=ind[nod].back();
ind[nod].pop_back();
if(viz[k]==0) {
viz[k]=1;
dfs(f[k]+s[k]-nod);
}
}
ans[++vf]=nod;
}
int main() {
in>>n>>m;
for(int i=1;i<=m;i++) {
in>>f[i]>>s[i];
ind[f[i]].push_back(i);
ind[s[i]].push_back(i);
}
for(int i=1;i<=n;i++) {
if(ind[i].size()%2==1) {
out<<"-1\n";
return 0;
}
}
dfs(1);
for(int i=1;i<vf;i++) {
out<<ans[i]<<" ";
}
return 0;
}