轻松的编程学习
首页
题库
学习路径
在线商城
能力地图
下载应用
登录 / 注册
菜单
用前向星做 BFS
👁️ 0 人浏览
💬 0 人评论
❤️ 添加收藏
补全:在链式前向星上从阿岚出发做 BFS,输出一共能走到几个人(含自己)。
(本题用
g++ -std=c++17 -O0
编译。)
提交你的答案
请登录后提交答案。
去登录
← 补全前向星的加边
两种写法度数一致 →
更多题目
改成"你好,有词"
输出"100 分"
把年龄改成 20
输出学习天数 30
修复:给文字加引号
修复:补上右括号
代码编辑器
语言:
python3
c11
cpp17
Ctrl
+
Enter
运行
👩🏫 AI
▶ 运行代码
重置代码
打印代码
#include <iostream> #include <string> #include <utility> #include <vector> using namespace std; // 五个人:0 阿岚、1 小满、2 阿泰、3 南风、4 北辰 const vector<string> NAMES = {"阿岚", "小满", "阿泰", "南风", "北辰"}; // 四段关系(无向):阿岚-小满、阿岚-阿泰、小满-阿泰、阿泰-南风 const vector<pair<int, int>> EDGES = {{0, 1}, {0, 2}, {1, 2}, {2, 3}}; int id_of(const string& name) { for (int i = 0; i < (int)NAMES.size(); i++) { if (NAMES[i] == name) return i; } return -1; } const int MAXN = 5, MAXM = 8; // 4 条无向边要存 8 条有向边 int head[MAXN], nxt[MAXM], to[MAXM], cnt = 0; void add_edge(int u, int v) { to[cnt] = v; nxt[cnt] = head[u]; head[u] = cnt++; } void build_star() { for (int i = 0; i < MAXN; i++) head[i] = -1; for (auto [a, b] : EDGES) { add_edge(a, b); add_edge(b, a); } } int main() { build_star(); bool seen[MAXN] = {false}; int q[MAXN], qh = 0, qt = 0; q[qt++] = 0; seen[0] = true; while (qh < qt) { int u = q[qh++]; // TODO: 顺着 head[u]、nxt 走遍 u 的每条边,没见过的邻居标记后入队 (void)u; } cout << qt << endl; }
本次输入:
输出:
👩🏫
AI
请登录后使用 AI 老师
×
登录后可获得解题思路、提示与错误分析。
去登录
关闭
🎉
恭喜你,回答正确!
系统判定:正确
我知道了
💬 题目评论
提交
全部评论
全部评论