栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

搜索与图论:图中点的层次—树与图的广度优先遍历

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

搜索与图论:图中点的层次—树与图的广度优先遍历

题目: AcWing 847. 图中点的层次
给定一个 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 
#include 
#include 
#include 
using namespace std;
typedef pair PII;

map> list;
queue q;
const int N = 100010;
int st[N];
int n,m;
int main()
{
    cin>>n>>m;
    while(m--)// 建图
    {
        int a,b;
        cin>>a>>b;
        list[a].push_back(b);
    }
    q.push({1,0});
    while(!q.empty())
    {
        PII s=q.front();
        if(s.first==n)// 如果找到
        {
            cout<
            if(st[it])continue;
            q.push({it,s.second+1});
        }
        q.pop();
    }
    cout<<"-1"<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958102.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号