首页 > 其他分享 >9073 关系网络 广搜 队列

9073 关系网络 广搜 队列

时间:2024-09-30 17:49:32浏览次数:6  
标签:9073 访问 队列 网络 节点 BFS int 步数

解决思路

 
  • 广度优先搜索 (BFS):使用 BFS 从起点 x 开始搜索,找到到达终点 y 的最短路径。
 
  • 队列:使用队列存储当前节点和步数。
 
  • 访问标记:使用数组 vis 标记节点是否被访问过,防止重复访问。
    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N = 1e3+10; // 定义常量N,表示最大节点数
    
    // 定义节点结构,包含当前节点编号和步数
    struct node {
        int x, step;
    };
    
    int g[N][N]; // 邻接矩阵,表示节点之间的关系
    int vis[N]; // 访问标记数组,防止重复访问
    int n, s, e; // n表示节点数,s表示起点,e表示终点
    int ans; // 存储最终答案
    
    // 广度优先搜索函数
    void bfs() {
        queue<node> q; // 定义队列用于BFS
        q.push({s, 0}); // 将起点加入队列,初始步数为0
        vis[s] = 1; // 标记起点已访问
    
        while(q.size()) { // 当队列不为空时
            int x = q.front().x, step = q.front().step; // 获取队首节点和步数
            q.pop(); // 弹出队首节点
    
            for(int i = 1; i <= n; i++) { // 遍历所有节点
                if(g[x][i] && !vis[i]) { // 如果节点i与当前节点x相连且未被访问
                    q.push({i, step + 1}); // 将节点i加入队列,步数加1
                    vis[i] = 1; // 标记节点i已访问
    
                    if(i == e) { // 如果节点i是终点
                        cout << step; // 输出步数,比较特殊,不需要step+1
                        return; // 结束搜索
                    }
                }
            }
        }
    }
    
    int main() {
        cin >> n >> s >> e; // 读取节点数、起点和终点
        for(int i = 1; i <= n; i++) // 读取邻接矩阵
            for(int j = 1; j <= n; j++)
                cin >> g[i][j];
        bfs(); // 调用BFS函数
        return 0; // 返回0,表示程序正常结束
    }

     

标签:9073,访问,队列,网络,节点,BFS,int,步数
From: https://www.cnblogs.com/jyssh/p/18442271

相关文章

  • 网络工程和信息安全专业应该考哪些证书?
    网络工程和信息安全专业在校大学生可以考的网络信息安全方向证书有NISP一级、NISP二级、CISP-DSG、CISP-PTE!一、NISP一级NISP一级是网络安全行业入门证书!NISP一级报名条件:年满16周岁即可NISP一级报名时间:随时可报NISP一级考试时间:每个月最后一周周五NISP一级考试方式:机考......
  • 2520 牛的舞蹈表演 二分答案 优先队列
    解决思路 二分查找:使用二分查找来确定舞台的最小大小 K。 检查函数:定义一个检查函数 check(mid),判断在舞台大小为 mid 时,演出是否能在 T_max 时间内完成。 优先队列:使用优先队列模拟舞台上的奶牛,确保每次有奶牛完成表演时,下一头奶牛立即上台。 更新边界:......
  • 9564 Work Scheduling 结构体排序 优先队列 最小堆 贪心
    解决思路 排序:首先将所有工作按照截止时间 D_i 进行排序。 优先队列:使用一个最小堆来存储当前选择的工作的利润。 选择工作:遍历所有工作,如果当前工作的截止时间大于堆的大小,则将该工作加入堆中;否则,如果当前工作的利润大于堆顶的利润,则替换堆顶的工作。#include......
  • 通过 DISM 命令注入驱动程序到 WIM 镜像的步骤如下:使用 $OEM$ 文件夹是一个简便的方式
    通过DISM命令注入驱动程序到WIM镜像的步骤如下:1.挂载WIM镜像使用以下命令挂载WIM镜像:bashCopyCodeDism/Mount-Wim/WimFile:install.wim/Index:2/MountDir:mount/WimFile: 指定要挂载的WIM文件路径。/Index: 指定要挂载的映像索引(例如,2)。/MountDir: 指......
  • Link-local地址是IPv6中一种特殊类型的地址,用于在同一链路(网络段)内进行通信。这些地址
    IPv6的link-local地址定义:Link-local地址是IPv6中一种特殊类型的地址,用于在同一链路(网络段)内进行通信。这些地址的前缀是FE80::/64,并且每个IPv6设备在其网络接口上都会自动生成一个link-local地址。来源:Link-local地址的设计目的是为了支持IPv6设备之间的本地通信,而不需要依......
  • 3319 哈夫曼树 优先队列 最小堆
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e3+10,inf=0x3f3f3f3f;//优先队列(最小堆),用于存储叶结点的权值priority_queue<int,vector<int>,greater<int>>q;intn,ans,x;intmain(){//读取叶结点的数量......
  • 即插即用篇 | DenseNet卷土重来! YOLOv10 引入全新密集连接卷积网络 | ECCV 2024
    本改进已同步到YOLO-Magic框架!本文重新审视了密集连接卷积网络(DenseNets),并揭示了其在主流的ResNet风格架构中被低估的有效性。我们认为,由于未触及的训练方法和传统设计元素没有完全展现其能力,DenseNets的潜力被忽视了。我们的初步研究表明,通过连接实现的密集连接非常......
  • 卓越网络安全教程笔记-四-
    卓越网络安全教程笔记(四)P64:11.4-【Metasploit渗透】Metasploit基本使用方法-2-一个小小小白帽-BV1Sy4y1D7qv好接下来我们来看另外一个比较重要的命令,也是我们会经常会用到的一个命令啊,模块相关的命令,柚子的使用方法啊,柚子那么英文翻译过来呢是使用的意思哎,主要通过这个命令......
  • 基于卷积神经网络的宠物皮肤病识别系统,resnet50,mobilenet模型【pytorch框架+python】
       更多目标检测和图像分类识别项目可看我主页其他文章功能演示:基于卷积神经网络的宠物皮肤病识别系统,resnet50,mobilenet【pytorch框架,python,tkinter】_哔哩哔哩_bilibili(一)简介基于卷积神经网络的宠物皮肤病识别系统是在pytorch框架下实现的,这是一个完整的项目,包括代码......
  • 轴承寿命预测 | 基于TCN时间卷积神经网络算法的轴承寿命预测附matlab完整代码
    轴承寿命预测|基于TCN时间卷积神经网络算法的轴承寿命预测附matlab完整代码数据划分:将数据集划分为训练集、验证集和测试集,通常采用时间序列数据的方式进行划分。构建TCN模型:设计TCN模型结构,包括卷积层、激活函数、池化层等。确保模型能够有效学习时间序列数据的特征。......