IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 1076 Forwards on Weibo -> 正文阅读

[数据结构与算法]1076 Forwards on Weibo

1076 Forwards on Weibo

题意描述

给出图结构 求某个节点发出信息在层数限制下能够转发的最多人数

输入输出格式

数据规模

节点数 <= 1e3

算法设计

像这种模型最适合使用BFS来求解了。BFS搜索的过程更像是水面波纹扩散,一圈一圈的,而且第一次到达某个节点时,其扩散次数一定是最少的,由此便有BFS最短路模型,比如 一次跳两个或三格 问到达目的地要跳几次 跳的过程好比扩散搜索的过程,结构便是扩散的次数,也是就扩散的层数 还有 八数码问题 问移动几次能够到达目表状态 还有 迷宫搜索 问移动几步能够到达出口 这些问题都可以使用BFS来求解
它们都具有一个很重要的特征 扩散一次 答案加一个定值 如果有些搜索答案加一 有些加二 即带权值的搜索 这就不再适合使用BFS最短路模型了

c++11代码

#include <bits/stdc++.h>
using namespace std;
using gg = long long;
const gg maxn = 1e3 + 10;
vector<vector<gg>>adj(maxn);
vector<bool>inq(maxn);
gg BFS(gg x, gg level){     //  这种步数模型最好使用BFS进行搜索 特点是 每扩散一次,结果 +1 BFS最短路 
    queue<array<gg,2>>q;
    q.push({x,0});
    inq[x] = true;
    gg num = 0;
    while(not q.empty()){
        auto top = q.front();
        q.pop();
        for(auto i : adj[top[0]]) {
            if(not inq[i]){
                inq[i] = true;
                if(top[1] + 1 <= level){
                    num++;   //  入队才转发
                    q.push({i,top[1] + 1});
                }
            }
        }
    }
    return num;
}
int main()
{
   ios::sync_with_stdio(false);
   cin.tie(0);
   gg n,level,user,follow,k;
   cin>>n>>level;
   for(gg i =1;i<=n;i++){
       cin>>user;
       while(user--){
           cin>>follow;
           adj[follow].push_back(i);
       }
   }
   cin>>k;
   while(k--){
       fill(inq.begin(),inq.end(),false);
       cin>>user;
       cout<<BFS(user,level)<<"\n";
   }
   return 0;
}

题目链接

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:47:48  更:2021-09-04 17:50:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:33:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码