作业介绍
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
// 邻接表存图
vector<int> g[100005];
bool vis[100005];
// dfs(x)表示从起点x开始遍历,输出能走到的节点
void dfs(int x){
vis[x] = 1;
cout<<x<<" ";
// 递归边界 无
// 遍历下一步能走到的点:g[x]
// 遍历g[x]能走到的所有节点
for(int i=0;i<g[x].size();i++){
// 可行性验证: 没有走过才能走
if(vis[g[x][i]]==0){
dfs(g[x][i]);
}
}
}
// 图上广搜
void bfs(int x){
// 起点入队,标记
queue<int> q;
q.push(x);
vis[x] = 1;
while(!q.empty()){
// 取出队首
int t = q.front();
q.pop();
cout<<t<<" ";
// 遍历下一步能走到的节点
for(int i=0;i<g[t].size();i++){
// 可行性验证: 没有走过才能走
if(vis[g[t][i]]==0){
vis[g[t][i]] = 1;
q.push(g[t][i]);
}
}
}
}
int main(){
// 数据输入
// 对动态数组g[i]排序:节点小的优先遍历
for(int i=1;i<=n;i++){
sort(g[i].begin(), g[i].end());
}
return 0;
}
题目
认领作业后才可以查看作业内容。
- 状态
- 正在进行…
- 题目
- 5
- 开始时间
- 2025-4-20 9:00
- 截止时间
- 2025-4-30 23:59
- 可延期
- 24 小时