社区讨论
0分求调(BFS还没写,但DFS有问题)
P5318【深基18.例3】查找文献参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mkia2ozs
- 此快照首次捕获于
- 2026/01/17 20:22 上个月
- 此快照最后确认于
- 2026/01/20 15:40 4 周前
CPP
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#define Please return
#define AC 0
//#pragma GCC optimize(2)
//#pragma GCC optimize(3)
using namespace std;
const int MAXN = 1e5 + 5;
const int MAXM = 4e5 + 5;
int n, m, cnt, step;
bool f;
vector<int> head(MAXN, -1);
vector<int> a(MAXN, 0);
vector<bool> vis(MAXN, false);
vector<int> s(1);
struct Edge {
int to, next;
};
vector<Edge> edge(MAXM);
void init() {
cnt = 0;
step = 0;
f = false;
}
void add(int u, int v) {
cnt++;
edge[cnt].to = v;
edge[cnt].next = head[u];
head[u] = cnt;
}
void dfs(int u) {
vis[u] = true;
a[++step] = u;
if (step == n) {
cout << 1 << " ";
for (int i = 2; i <= n; i++) {
cout << a[i] << " ";
}
f = true;
return;
}
for (int i = head[u]; i != -1; i = edge[i].next) {
int v = edge[i].to;
if (!vis[v]) {
s.push_back(v);
}
}
sort(s.begin(), s.end());
for (int v : s) {
dfs(v);
if (f) return;
}
vis[u] = false;
step--;
}
int main() {
cin >> n >> m;
init();
for (int i = 1; i <= m; i++) {
int u, v;
cin >> u >> v;
add(u, v);
add(v, u);
}
dfs(1);
Please AC;
}
// BFS还没写
回复
共 0 条回复,欢迎继续交流。
正在加载回复...