Nu aveti permisiuni pentru a descarca fisierul grader_test1.in
Cod sursa(job #3041444)
Utilizator | Data | 31 martie 2023 15:17:50 | |
---|---|---|---|
Problema | Ciclu Eulerian | Scor | 80 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.01 kb |
#include <bits/stdc++.h>
#define GARDA fin.close(); fout.close(); exit(0);
using namespace std;
string const& task("ciclueuler");
ifstream fin(task + ".in");
ofstream fout(task + ".out");
int const N(1e5 + 5), M(5e5 + 5);
int a[M], b[M], n, m, p[N];
bool used[M];
vector<int> euler, g[N];
inline void DFS(int const& x = 1) {
while (p[x] < static_cast<int>(g[x].size())) {
int e = g[x][p[x]++];
if (used[e])
continue;
used[e] = true;
int y = a[e];
if (x == y)
y = b[e];
DFS(y);
}
euler.emplace_back(x);
}
signed main() {
fin >> n >> m;
for (int i = 1; i <= m; ++i) {
fin >> a[i] >> b[i];
g[a[i]].emplace_back(i);
g[b[i]].emplace_back(i);
}
for (int i = 1; i <= n; ++i)
if (g[i].size() & 1) {
fout << -1;
GARDA
}
DFS();
euler.pop_back();
for (int const& x : euler)
fout << x << ' ';
GARDA
}