Pagini recente » Cod sursa (job #3361176) | Cod sursa (job #3362278) | Cod sursa (job #3361972) | Monitorul de evaluare | Cod sursa (job #3361973)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("ciclueuler.in") ;
ofstream cout ("ciclueuler.out");
const int n_max = 100005,m_max = 500005;
vector <pair<int, int>> list[n_max];
bool sters[m_max];
int verif[n_max];
vector <int> ciclu;
void euler(int node){
pair <int, int> mch;
while(!list[node].empty()){
mch = list[node].back();
list[node].pop_back();
if(!sters[mch.second]) {
sters[mch.second] = true;
euler(mch.first);
}
}
ciclu.push_back(node);
}
int main() {
int n,m;
cin >> n >> m;
int a,b;
pair <int, int> psh;
for(int i =1; i<=m; i++){
cin >> a >> b;
psh = {b,i};
list[a].push_back(psh);
psh.first = a;
list[b].push_back(psh);
verif[a]++;
verif[b]++;
}
for(int i =1; i<=n; i++){
if(verif[i] % 2 == 1) {
cout << -1;
return 0;
}
}
euler(1);
for(int i =0; i < ciclu.size(); i++){
cout << ciclu[i] << ' ';
}
return 0;
}