int to;
bool exists;
int revref;
- ```
-
+
bool operator<(const edge& b) const { return to < b.to; }
};
-
+
vector<edge> beg[505];
int cnt[505];
-
+
const int dn = 500;
stack<int> ans;
-
+
void Hierholzer(int x) { // 关键函数
for (int& i = cnt[x]; i < (int)beg[x].size();) {
if (beg[x][i].exists) {
}
ans.push(x);
}
-
+
int deg[505];
int reftop[505];
-
+
int main() {
for (int i = 1; i <= dn; ++i) {
beg[i].reserve(1050); // vector 用 reserve 避免动态分配空间,加快速度
}
-
+
int m;
scanf("%d", &m);
for (int i = 1; i <= m; ++i) {
++deg[a];
++deg[b];
}
-
+
for (int i = 1; i <= dn; ++i) {
if (!beg[i].empty()) {
sort(beg[i].begin(), beg[i].end()); // 为了要按字典序贪心,必须排序
}
}
-
+
for (int i = 1; i <= dn; ++i) {
for (int j = 0; j < (int)beg[i].size(); ++j) {
beg[i][j].revref = reftop[beg[i][j].to]++;
}
}
-
+
int bv = 0;
for (int i = 1; i <= dn; ++i) {
if (!deg[bv] && deg[i]) {
bv = i;
}
}
-
+
Hierholzer(bv);
-
+
while (!ans.empty()) {
printf("%d\n", ans.top());
ans.pop();