路长为一 无环 起点1终点n的最zz 广搜

本文介绍了一个使用C++实现的广度优先搜索(BFS)算法示例,该算法用于在一个无向图中寻找从起点到终点的最短路径。通过定义节点结构体并利用标准模板库中的队列,实现了图的广度优先遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <cstdlib>
#include <queue>


using namespace std;


int n,m;
queue<int> road[1000];
int ans;


struct node
{
    int now;
    int length;       
};


void bfs()
{
    queue<node> q;
    node temp, fro;
    temp. now=1;
    temp. length=0;
    q. push (temp);
    int i;
    while(q.front().now != n)
    {
        fro = q.front();
        q. pop();
        i = road [fro.now]. front();
        do
        {
            temp. now = road [fro.now]. front();
            temp. length = fro. length + 1;
            q. push(temp);
            road[fro.now]. push (road[fro. now]. front());
            road[fro.now]. pop();
        }
        while(road[fro.now]. front() != i);
    }
    ans = q.front(). length;
}


int main()
{
    cin >> n >> m;    
    int i, j;
    int from, to;
    for(i=1; i<=m; i++)
    {  
        cin >> from >> to;
        road[from]. push(to);       
    }
    bfs();
    cout << ans << endl;
    system("PAUSE");
}
P1967 [NOIP 2013 提高组] 货车运输 题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 nn 座城市,编号从 11 到 nn,城市之间有 mm 条双向道。每条道对车辆都有重量限制,简称限重。 现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,多能运多重的货物。 输入格式 第行有两个用个空格隔开的整数 n,mn,m,表示 A 国有 nn 座城市和 mm 条道。 接下来 mm 行每行三个整数 x,y,zx,y,z,每两个整数之间用个空格隔开,表示从 xx 号城市到 yy 号城市有条限重为 zz 的道。 注意: x≠yx=y,两座城市之间可能有多条道 。 接下来行有个整数 qq,表示有 qq 辆货车需要运货。 接下来 qq 行,每行两个整数 x,yx,y,之间用个空格隔开,表示辆货车需要从 xx 城市运输货物到 yy 城市,保证 x≠yx=y 输出格式 共有 qq 行,每行个整数,表示对于每辆货车,它的大载重是多少。 如果货车不能到达目的地,输出 −11。 输入输出样例 #1 输入 #1 4 3 1 2 4 2 3 3 3 1 1 3 1 3 1 4 1 3 输出 #1 3 -1 3 说明/提示 对于 30%30% 的数据,1≤n<10001≤n<1000,1≤m<10,0001≤m<10,000,1≤q<10001≤q<1000; 对于 60%60% 的数据,1≤n<10001≤n<1000,1≤m<5×1041≤m<5×1041≤q<10001≤q<1000; 对于 100%100% 的数据,1≤n<1041≤n<1041≤m<5×1041≤m<5×1041≤q<3×1041≤q<3×104,0≤z≤1050≤z≤105。生成测试数据
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值