传送门

题目

成都有n家火锅店,编号从1到n,第i家火锅店提供一定辣度的火锅。较高的辣度表示更辣的味道,而较低的辣度则更温和(但仍然需要非常小心)。 我们可以将这 n 家餐厅视为具有 m 条边的无向图上的节点。现在我们有q个游客想尝试一下火锅。给定游客当前的位置和他们所能承受的最大辣味值,你的任务是计算游客和他能接受的最近餐厅之间的最短距离。 在这个问题中,我们将路径的距离定义为路径中的边数。

题解

定义一个数组dis[i][j],表示火锅店j距离辣味值为i的火锅店的最小距离。
然后100次bfs即可。

疑惑点

bfs查找的过程。为啥不是这样的?dis[c][y] = min(dis[c][x] + 1, dis[c][y]);
而是这样的,dis[c][y] = dis[c][x]+1。虽然两个都AC了。

疑惑的原因还是对搜索的过程不熟悉。搜索的时候是一层一层的来的,具体的说就是:先把辣味值为i结点入队,然后分别把辣味值为i的子结点入队(若已在队列中则跳过),然后再下一步就是子结点的的子结点,依次往复。所以可以求出j火锅店到i火锅店的最小距离(因为距离i火锅店近的,肯定先入队,先入队就先更新,所以可以做到最小)

大佬链接

#include<cstdio>
#include<queue>
#include<set>
#include<cstdlib>
#include<string.h>
#include<string>
#include<iostream>
#include<cmath>
#include<map>
#include<algorithm>
#define endl "\n"
#define IOS ios::sync_with_stdio(0), cin.tie(0),cout.tie(0)
#define ft first
#define sd second
#define pll pair<ll, ll>
#define pii pair<int, int>
#define ll long long int
#define mt(a,b) memset(a, b, sizeof a)
//#define int long long
const double PI = acos(-1.0);
const int inf = 0x3f3f3f3f;
const int INF = 0x7fffffff;
using namespace std;
const int N = 2e5 + 7, M = 1e6 + 10;
vector<int> v[N];
int w[N], dis[105][N];
int n;
queue<int> q;
void bfs(int c)
{for (int i = 1; i <= n; i++)if (w[i] == c) q.push(i), dis[c][i] = 0;while (!q.empty()){int x = q.front(); q.pop();for (int i = 0; i < v[x].size(); i++){int y = v[x][i];if (dis[c][y] != inf) continue;q.push(y);dis[c][y] = dis[c][x] + 1;}}
}int main()
{IOS;int m, q;cin >> n >> m >> q;for (int i = 1; i <= n; i++) cin >> w[i];for (int i = 1; i <= m; i++){int x, y; cin >> x >> y;v[x].push_back(y); v[y].push_back(x);}mt(dis, 0x3f);for (int i = 1; i <= 100; i++)bfs(i);for (int i = 1; i <= n; i++)for (int j = 1; j <= 100; j++)dis[j][i] = min(dis[j][i], dis[j - 1][i]);while (q--){int l, r; cin >> r >> l;cout << (dis[l][r] == inf ? -1 : dis[l][r]) << endl;}return 0;
}

L. Spicy Restaurant(bfs)相关推荐

  1. L. Spicy Restaurant(多源BFS+递推)

    L. Spicy Restaurant 题目链接 https://codeforces.com/gym/103117/problem/L 思路: 1.考虑到1≤ai≤100 ,一开始直接使用BFS,对 ...

  2. 2021 ICPC 四川省赛 L - Spicy Restaurant(多源BFS,DP)

    Spicy Restaurant https://codeforces.com/gym/103117/problem/L 题目大意:给一个 nnn 个点 mmm 条边的点权图.再给出 qqq 个询问, ...

  3. L. Spicy Restaurant

    L. Spicy Restaurant 题意:无向图的每个顶点有一个属性wi,Q个询问,第i个询问给定顶点p和价值a,问距离p最近的wi<a的i距离p有多远 题解: w的范围很小,直接做100次 ...

  4. 算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记

    算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记 前言 深搜与广搜 搜索的核心概念 问题求解树 搜索剪枝和优化 问题求解树的状态 对比深搜与广搜 DFS-深度(deep ...

  5. 《算法笔记》学习日记——8.2 广度优先搜索(BFS)

    目录 8.2 广度优先搜索(BFS) 问题 A: Jugs 问题 B: DFS or BFS? 问题 C: [宽搜入门]8数码难题 问题 D: [宽搜入门]魔板 问题 E: [宽搜入门]巧妙取量 小结 ...

  6. python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...

    Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...

  7. 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)

    一.图的基本介绍 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图. 图的举例 ...

  8. Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)

    对算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)用Java实现其中的伪代码算法,案例也采用算法导论中的图. import java.util.ArrayList; import java ...

  9. 【洛谷】马的遍历--广度优先搜索(BFS)

    题目描述 传送门:https://www.luogu.com.cn/problem/P1443 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意 ...

最新文章

  1. c语言编程题餐饮服务打分,求详细分析C语言题餐饮服务质量调查打分题和答案..._质量员考试_帮考网...
  2. vue - check-versions.js for child_process
  3. 深度学习的发展方向: 深度强化学习!
  4. 100多篇论文被知网擅自收录!89岁教授维权获赔70余万!
  5. 怎么点亮段码屏_手机被人偷了,支付宝里的钱被转走了,遇到这种情况该怎么办?...
  6. 【安全漏洞】简要分析复现了最近的ProxyShell利用链
  7. windbg基本命令
  8. excel文件下载下来损坏 js_js处理文件流下载excel
  9. 数据库设计系列9--将ER模型映射为表
  10. java \t怎么从头开始_通过这些简单的步骤从头开始学习Java
  11. 【Python】Turtle绘制科赫雪花
  12. 知乎究竟走的是什么路线?克隆之路靠谱吗?
  13. [转]深入理解C/C++ [Deep C (and C++)]
  14. okhttp post php,Android OkHttp 结合php 多图片上传实例
  15. 女神节福利:友萌君送你~健身踏青装备
  16. 看透网络执法官的本质
  17. 不谋一时不足以谋一域_请问不谋万世者不足谋一时,不谋全局者,不足谋一域,接下来是什么?这段话太精辟了,能不能把全文发送过来?...
  18. Linux文件的颜色意义
  19. Rabbitmq 安全账号管理方案
  20. The Java™ Tutorials——(5)Essential Classes——Concurrency

热门文章

  1. 工作中发现 需要改进的地方
  2. android韩国代理,韩国Android手机市场占有率达70%
  3. 有效说服三部曲(纯干货无废话)
  4. 脉冲多普勒雷达设计附matlab代码
  5. 阿里云服务器CPU超分型专有宿主机创建v5实例
  6. C语言二维数组的初始化方法
  7. 淘宝/天猫API:item_search_neighbors-邻家好货
  8. 【笔记】ARM裸机程序开发_part1
  9. 狡猾的老鼠 -有一只狡猾的老鼠,在一个环形的田埂上挖了n个老鼠洞,这些洞也是连接为一个环状,我们要用泥土填满这些鼠洞,老鼠从第0号洞开始出现(第0号洞不填),然后依次按每间隔m个洞出现一次。我们要跟在
  10. 拍照怎么测量尺寸?这些方法可以了解一下