Pagini recente » Cod sursa (job #1365014) | Cod sursa (job #3161525) | Cod sursa (job #964440) | Cod sursa (job #769257) | Cod sursa (job #2202663)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#define dMAX 100000
using namespace std;
int n, m, x, y;
bool viz;
vector<pair<int, bool> > graf[dMAX + 2];
vector<int> muchii;
int d[dMAX + 2];
map<pair<int, int>, bool> myMap;
multimap<pair<int, int>, bool> myMultiMap;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
void Euler(int v) {
int newV, u, l, nn;
for (u = 0; u < graf[v].size(); u++) {
newV = graf[v][u].first;
viz = graf[v][u].second;
if (!viz) {
graf[v][u].second = true;
for (l = 0; l < graf[newV].size(); l++) {
nn = graf[newV][l].first;
if (nn == v && graf[newV][l].second == false) {
graf[newV][l].second = true;
break;
}
}
Euler(newV);
}
}
muchii.push_back(v);
}
int main()
{
int i, j;
fin >> n >> m;
for (i = 1; i <= m; i++) {
fin >> x >> y;
graf[x].push_back({y, 0});
graf[y].push_back({x, 0});
d[x]++, d[y]++;
myMultiMap.insert({{x, y}, 0});
myMultiMap.insert({{y, x}, 0});
}
for (i = 1; i <= n; i++) {
if (d[i] % 2) {
fout << -1;
return 0;
}
}
Euler(1);
if (muchii.size() - 1 != m) {
fout << -1;
return 0;
}
for (i = 0; i < muchii.size() - 1; i++) fout << muchii[i] << ' ';
return 0;
}