社区讨论
DFS怎么写, 玄关!!!
P5318【深基18.例3】查找文献参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lzmi7vp5
- 此快照首次捕获于
- 2024/08/09 17:28 2 年前
- 此快照最后确认于
- 2024/08/09 18:38 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int cnt = 0, head[N];
int ans[N];
bool vis[N];
struct edge{
int to;
int nxt;
}e[N];
void add(int u, int v) {
e[cnt].to = v;
e[cnt].nxt = head[u];
head[u] = cnt++;
}
void bfs(int r, int u){
vis[u] = true;
ans[r] = max(ans[r], u);
for(int i = head[u] ; i != -1 ; i = e[i].nxt){
int s = e[i].to;
if(!vis[u])
dfs(r, s);
}
}
int main()
{
int n, m;
cin >> n >> m;
memset(head, -1, 4 * (n + 1));
for(int i = 1 ; i <= m ; i ++){
int u, v;
cin >> u >> v;
add(u, v);
}
for(int i = 1 ; i <= n ; i ++){
memset(vis, false , 4 *(n + 1));
bfs(i, i);
cout << ans[i] << " ";
}
return 0;
}
蒟蒻想写链式前向星
回复
共 3 条回复,欢迎继续交流。
正在加载回复...