首页 > 其他分享 >搜索与图论(四)树与图的广度优先遍历---以题为例

搜索与图论(四)树与图的广度优先遍历---以题为例

时间:2024-03-31 16:23:32浏览次数:16  
标签:输出 图论 遍历 idx int ne --- include 号点

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。

所有边的长度都是 1,点的编号为 1∼n。

请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1。

输入格式

第一行包含两个整数 n 和 m。

接下来 m 行,每行包含两个整数 a 和 b,表示存在一条从 a 走到 b 的长度为 1 的边。

输出格式

输出一个整数,表示 1 号点到 n 号点的最短距离。

数据范围

1≤n,m≤105

输入样例:

4 5
1 2
2 3
3 4
1 3
1 4

输出样例:

1
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N=100010;
int m,n;
int h[N],e[N],ne[N],idx;
int d[N];

void add(int a,int b){
    e[idx]=b;
    ne[idx]=h[a];
    h[a]=idx++;
}

int bfs(){
    memset(d,-1,sizeof d);
    queue<int> q;
    d[1]=0;
    q.push(1);
    
    while(q.size()){
        int t =q.front();
        q.pop();
        for(int i =h[t];i!=-1;i=ne[i]){
            int j=e[i];
            if(d[j]==-1){
                d[j]=d[t]+1;
                q.push(j);
            }    
        }
    }
    return d[n];
}

int main(){
    cin>>n>>m;
    memset(h,-1,sizeof h);
    for(int i =0;i<m;i++){
        int a,b;
        cin>>a>>b;
        add(a,b);
    }
    cout<<bfs()<<endl;
    return 0;
}

 

标签:输出,图论,遍历,idx,int,ne,---,include,号点
From: https://www.cnblogs.com/Ghost-Knight/p/18106860

相关文章

  • CodeTonRound8-BC1C2补题
    B-BessieandMEX思路:顺,逆填都可以.见代码注释voidsolve(){//补B--不用str.find来维护,这个是o(n)的。用set的count()orfind()来维护,这两个都是o(logn)的intn;cin>>n;////顺着填:填的数字=MEX.find('0')-aior填了MEX[MEX.find('0')]='1',之后MEX.f......
  • PTA R7-5 找最大的字符串
    R7-5找最大的字符串分数10入门全屏浏览切换布局作者 王秀单位 福州大学输入5个字符串,输出其中最大的字符串。输出格式:printf("Maxis:%s\n",);输入输出示例:括号内为说明,无需输入输出输入样例:peachpearmelonorangeberry输出样例:Maxis:pear #i......
  • PTA (指针和数组 )R7-2 在数组中查找指定元素
    R7-2在数组中查找指定元素分数10入门全屏浏览切换布局作者 王秀单位 福州大学输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个正整数n(1<n<=10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应元素的最小下标,否则......
  • 【安全技术系列】-- 垃圾邮件检测方法
    基于被动网络流量监控的垃圾邮件检测方法的45个思路基于被动网络流量监控的垃圾邮件检测方法是一种有效的方式,可以检测和过滤垃圾邮件,而无需依赖传统的邮件内容分析。这种方法可以通过监视网络流量中的邮件传输活动来检测潜在的垃圾邮件,以下是一些步骤和方法,以实现这一目标:流量......
  • 3.25-3.31
    天梯赛2:7-12这是二叉搜索树吗?在满足题意的前提下从前后分别往中间走模拟二叉树的建立即可。///l、//(゚、。7//l、~ヽ//じしf_,)ノ//不要放弃!猫猫会为你加油!#include<bits/stdc++.h>#defineendl'\n'#defineintlonglongusingnamespacestd;constint......
  • day07-函数入门
    1.初识函数函数,可以当作是一大堆功能代码的集合。def函数名():函数内编写代码....函数名()例如:#定义名字为info的函数definfo():print("第一行")print("第二行")print("第n行")#执行函数info()什么时候会用到函数呢?一般在项目开发中会有......
  • U8二次开发CO-基于Net8调用COM对象
    以前没有碰过U8,只知道基于Net平台构建,本次业务需求是要把钉钉和U8打通,完成代办和消息提醒。网上搜索U8相关二开资料后发现,都是一些技术片段,零零碎碎的不成体系,也有可能是大客户都去U9或者Cloud了,老旧的8面临过气与替换(个人意见),遂边琢磨边做一些示例。开始介绍U8的CO二次开发模......
  • 回答问题2024-3-31【cadical的编译与求解格式】
    cadical的编译与求解格式调用 你好!我用的cadical求解器不需要安装。直接在编译环境下调试运行。1.在原作者主页(https://fmv.jku.at/software/index.html)下载开源程序:cadical-sc2020-45029f8.tar.xz 2解压放置pc电脑一个目录下,如D盘根目录.D:\cadical-sc2020-4......
  • 【攻防技术系列+流量分析】--日志溯源技巧
    下面是结合网上论坛针对日志分析溯源的理解现阶段大部分企业都会上日志审计设备,在配上流量分光,还有各类IDS、WAF等设备日志,对安全溯源分析十分方便,但在日常工作中,免不了要直接看服务器相关请求日志的情况,这个时候就需要我们自身具备日志分析的能力了。一、日志分析流程1、统计......
  • SMU Winter 2024 div2 ptlks的周报Week 7(3.25-3.31)
    哈夫曼编码对出现频率大的字符赋予较短的编码,对出现频率小的字符赋予较长的编码。哈夫曼树的建树过程为,每次选取最小和次小的根节点,将它们之和作为它们的根节点,左子节点为小点,右子节点为次小点,直至仅剩一棵树。一棵哈夫曼树,左子树为0,右子树为1,以根节点到叶子结点的路径作为每个叶......