Pagini recente » Cod sursa (job #376885) | Cod sursa (job #2405792) | Cod sursa (job #1814087) | Cod sursa (job #2899655) | Cod sursa (job #2170579)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 100010
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
struct edge {
int val, ind;
};
int n, m, viz[NMAX];
vector<edge> G[NMAX];
int main()
{
f >> n >> m;
for (int i = 0, n1, n2; i < m; ++i) {
f >> n1 >> n2;
G[n1].push_back({n2, i});
G[n2].push_back({n1, i});
}
vector<int> ans, stk;
stk.push_back(1);
g << 1 << ' ';
while (!stk.empty()) {
int nd = stk.back();
while (!G[nd].empty() && viz[G[nd].back().ind])
G[nd].pop_back();
if (G[nd].empty()) {
if (stk.back() != 1) g << stk.back() << ' ';
stk.pop_back();
} else {
stk.push_back(G[nd].back().val);
viz[G[nd].back().ind] = 1;
}
}
return 0;
}