Pagini recente » Cod sursa (job #401632) | Cod sursa (job #341114) | Cod sursa (job #1932687) | Cod sursa (job #199816) | Cod sursa (job #1337159)
#include<fstream>
#include<vector>
#include<list>
#include<stack>
using namespace std;
typedef int var;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct Edge {
var n, ind;
Edge(var a, var b) : n(a), ind(b) {}
};
const var MAXN = 100001;
vector<bool> TAKEN;
vector<Edge> G[MAXN];
var n, m;
void euler(var node) {
fout<<node<<" ";
while(!G[node].empty()) {
Edge &e = G[node].back();
G[node].pop_back();
if(TAKEN[e.ind]) {
continue;
}
TAKEN[e.ind] = 1;
euler(e.n);
}
}
int main() {
var a, b;
fin>>n>>m;
TAKEN.resize(m, 0);
for(var i=1; i<=m; i++) {
fin>>a>>b;
G[a].push_back(Edge(b, i));
G[b].push_back(Edge(a, i));
}
while(!G[1].empty()) {
Edge &e = G[1].back();
TAKEN[e.ind] = 1;
G[1].pop_back();
euler(e.n);
}
return 0;
}