Pagini recente » Cod sursa (job #2762922) | Cod sursa (job #964463) | Cod sursa (job #2904699) | Cod sursa (job #514805) | Cod sursa (job #2202930)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string.h>
#define dMAX 100000
using namespace std;
int n, m, x, y, poz, nr;
vector<pair<int, int> > graf[dMAX + 2];
bool viz[dMAX * 5 + 2], vv;
int d[dMAX + 2], l;
char sir[30];
int idx;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
void GetInt(int &t) {
t = 0;
while (isdigit(sir[idx])) {
t *= 10;
t += (int)sir[idx] - '0';
idx++;
}
idx++;
}
void Euler(int v) {
int newV, u, l, nn, siz;
/// Iterativ
for (u = 0; u < graf[v].size(); u++) {
newV = graf[v][u].first;
vv = viz[graf[v][u].second];
if (!vv) {
viz[graf[v][u].second] = true;
Euler(newV);
}
}
nr++;
if (nr <= m)
fout << v << ' ';
}
int main()
{
int i, j;
fin >> n >> m;
fin.get();
for (i = 1; i <= m; i++) {
idx = 0;
fin.getline(sir, 15);
GetInt(x);
GetInt(y);
l++;
graf[x].push_back({y, l});
graf[y].push_back({x, l});
d[x]++, d[y]++;
}
for (i = 1; i <= n; i++) {
if (d[i] % 2) {
fout << -1;
return 0;
}
}
Euler(1);
return 0;
}