社区讨论
灵异现象,stack 模版报RE
灌水区参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lzmqg5k6
- 此快照首次捕获于
- 2024/08/09 21:18 2 年前
- 此快照最后确认于
- 2024/08/09 22:44 2 年前
STL 模版存访问点的顺序报 RE,改成手写栈 AC
RE 代码
C#include <cstdio>
#include <algorithm>
#include <stack>
const int MAXN = 1e5, MAXM = 5e5;
int n, m;
int cnt, head[MAXN + 5];
struct node {
int v, n;
} e[2 * MAXM + 5];
void add(int u, int v) {
e[++cnt] = {v, head[u]};
head[u] = cnt;
}
int start[MAXN + 5];
std::stack<int> res;
bool vis[2 * MAXM + 5];
void dfs(int p) {
for (int i = head[p]; i; i = e[i].n) {
if (vis[i]) { continue; }
vis[i] = true;
dfs(e[i].v);
}
// STL 模版
res.push(p);
}
int main() {
scanf("%d%d", &n, &m);
int u, v;
for (int i = 1; i <= m; i++) {
scanf("%d%d", &u, &v);
add(u, v); add(v, u);
}
dfs(1);
while (!res.empty()) {
printf("%d\n", res.top());
res.pop();
}
return 0;
}
AC 代码
C#include <cstdio>
#include <algorithm>
const int MAXN = 1e4, MAXM = 5e4;
int n, m;
int cnt, head[MAXN + 5];
struct node {
int v, n;
} e[2 * MAXM + 5];
void add(int u, int v) {
e[++cnt] = {v, head[u]};
head[u] = cnt;
}
int start[MAXN + 5], ans[2 * MAXM + 5];
bool vis[2 * MAXM + 5];
void dfs(int p) {
for (int i = head[p]; i; i = e[i].n) {
if (vis[i]) { continue; }
vis[i] = true;
dfs(e[i].v);
}
// 此处改为手写栈
ans[++ans[0]] = p;
}
int main() {
scanf("%d%d", &n, &m);
int u, v;
for (int i = 1; i <= m; i++) {
scanf("%d%d", &u, &v);
add(u, v); add(v, u);
}
dfs(1);
for (int i = ans[0]; i >= 1; i--) {
printf("%d\n", ans[i]);
}
return 0;
}
有人知道为什么吗
回复
共 2 条回复,欢迎继续交流。
正在加载回复...