ABC254E Small d and k(BFS)

E - Small d and k

题目描述:

  给n个顶点m条边的无向图,每个顶点的度不超过3,给你Q次询问,每次询问给你一个顶点x和一个k,表示求距离顶点x的长度不超过k的顶点标号之和。

思路:

  关键在每一个点的度是不超过3的,所以可以考虑对每一个询问的点做一遍BFS,每一次搜索的点不会超过333个点,所以查询的复杂度不会超过O(30q)。在BFS的时候不能光存一个当前的节点编号i,还需要存一个变量d,表示从初始点到当前点的距离,如果大于k就不继续搜下去.

auto bfs = [&](int u, int k) -> int { std::queue<std::array<int, 2>> q; q.push({u, 0}); std::vector<bool> vis(n + 1); int ans = 0; while(q.size()) { std::array<int, 2> t = q.front(); q.pop(); if (vis[t[0]] || t[1] > k) continue; ans += t[0]; vis[t[0]] = true; for (auto& v : adj[t[0]]) { q.push({v, t[1] + 1}); } } return ans; };

__EOF__

本文作者HoneyGrey
本文链接https://www.cnblogs.com/Haven-/p/16739482.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   浅渊  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示