当前位置: 首页 > news >正文

【题解-洛谷】B4292 [蓝桥杯青少年组省赛 2022] 路线

题目:B4292 [蓝桥杯青少年组省赛 2022] 路线

题目描述

有一个旅游景区,景区中有 N N N 个景点,景点以数字 1 1 1 N N N 编号,其中编号为 N N N 的景点为游客服务中心所在地。景区中有 M M M 条连接路线,每条路线连接两个景点。

已知:

  1. 一个景点可以被多条路线连接;
  2. 景点之间的连接路线都可以双向行走;

当给出 N N N 个景点和 M M M 条连接路线,及 M M M 条路线的连接关系,请你计算出从编号 1 1 1 到编号 N − 1 N-1 N1 的每一个景点,到达游客服务中心至少需要经过几条路线。如果某个景点不能到达游客服务中心则输出 − 1 -1 1

例如:

  • N = 5 N=5 N=5 M = 4 M=4 M=4
  • 4 条路线的连接关系为: 1 ↔ 2 1\leftrightarrow2 12 1 ↔ 3 1\leftrightarrow3 13 2 ↔ 4 2\leftrightarrow4 24 2 ↔ 5 2\leftrightarrow5 25
  • 则:
    • 景点 1 1 1 到达景点 5 5 5(游客服务中心)至少经过 2 2 2 条路线(路线 2 2 2,路线 4 4 4
    • 景点 2 2 2 到达景点 5 5 5 至少经过 1 1 1 条路线(路线 4 4 4
    • 景点 3 3 3 到达景点 5 5 5 至少经过 3 3 3 条路线(路线 1 1 1,路线 2 2 2,路线 4 4 4
    • 景点 4 4 4 到达景点 5 5 5 至少经过 2 2 2 条路线(路线 3 3 3,路线 4 4 4

输入格式

第一行输入两个正整数 N N N M M M 4 ≤ N ≤ 100 4 \leq N \leq 100 4N100 1 ≤ M ≤ 100 1 \leq M \leq 100 1M100), N N N 表示景点个数, M M M 表示路线条数,两个正整数之间一个空格隔开。

接下来输入 M M M 行,每行包括两个正整数 S S S E E E 1 ≤ S ≤ N 1 \leq S \leq N 1SN 1 ≤ E ≤ N 1 \leq E \leq N 1EN S ≠ E S \neq E S=E),两个正整数之间一个空格隔开,表示编号 S S S 和编号 E E E 的两个景点有一条路线连接。

输出格式

一行输出多个整数。按照 1 1 1 N − 1 N-1 N1 的编号顺序,分别输出每个景点到达编号 N N N(游客服务中心),经过几条路线可以到达,如果某个景点不能到达则输出 − 1 -1 1,整数之间一个空格隔开。

输入输出样例 #1

输入 #1

5 4
1 2
1 3
2 4
2 5

输出 #1

2 1 3 2

代码

#include<iostream>
#include<cstring>using namespace std;const int MaxN = 100 + 10, MaxM = 100 + 10;
int N, M, h[MaxN], e[MaxM * 2], ne[MaxM * 2], idx, q[MaxN], hh, tt = -1, d[MaxN];void init(){memset(h, -1, sizeof h);
}void add(int a, int b){e[idx] = b;ne[idx] = h[a];h[a] = idx ++;
}void init_queue(){hh = 0, tt = -1;
}void insert(int x){q[++ tt] = x;
}void dele(){hh ++;
}bool isempty(){return hh > tt;
}void bfs(){memset(d, -1, sizeof d);insert(N);d[N] = 0;while(!isempty()){int t = q[hh];dele();for(int i = h[t]; i != -1; i = ne[i]){int j = e[i];if(d[j] == -1){insert(j);d[j] = d[t] + 1;}}}
}
int main(){cin >> N >> M;init();while(M --){int a, b;cin >> a >> b;add(a, b), add(b, a);}bfs();for(int i = 1; i < N; i ++){cout << d[i] << " ";}return 0;
}

结果

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 3D Web轻量化引擎HOOPS Communicator赋能一线场景,支持本地化与动态展示?
  • C语言中的段错误(Segmentation Fault):底层原理及解决方法
  • 蓝桥杯 回文日期
  • BIO、NIO、AIO的区别
  • GAMES202-高质量实时渲染(Assignment 4)
  • 你应该使用的 php 加解密函数
  • 【开发技术】Abp.vnext下的JWT处理,添加多种认证处理方式
  • ES Serverless 8.17王牌发布:向量检索「火力全开」,智能扩缩「秒级响应」!
  • 完整的加密解密aes
  • C#中清空DataGridView的方法
  • rk3568 , mipi 屏幕调试(3588s 可以显示,但是3568 不能显示)
  • 【堆垛策略】设计方法
  • NFT模式:数字资产确权与链游经济系统构建
  • BeckHoff -->电脑与PLC连接
  • 今天做的力扣SQL
  • 基于FPGA的PID算法学习———实现P比例控制算法
  • 轻量级屏蔽文件管理方案
  • 深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”
  • 端口扫描介绍及使用(学习笔记)
  • 苍穹外卖-day02
  • 网上购物网站建设/郑州百度seo
  • 新网站做seo优化步骤/企业qq
  • js做网站好吗/哪里可以做
  • 国外房产中介网站/站长工具精华
  • 挂号网站建设/西安seo优化公司
  • 网站开发综合实训总结/百度浏览器app下载