题目描述

凯凯的工厂正在有条不紊地生产一种神奇的零件,神奇的零件的生产过程自然也很神奇。工厂里有 nnn 位工人,工人们从 1∼n1 \sim n1∼n 编号。某些工人之间存在双向的零件传送带。保证每两名工人之间最多只存在一条传送带。

如果 xxx 号工人想生产一个被加工到第 L(L>1)L (L \gt 1)L(L>1) 阶段的零件,则所有与 xxx 号工人有传送带直接相连的工人,都需要生产一个被加工到第 L−1L - 1L−1 阶段的零件(但 xxx 号工人自己无需生产第 L−1L - 1L−1阶段的零件)。

如果 xxx 号工人想生产一个被加工到第 111 阶段的零件,则所有与 xxx 号工人有传送带直接相连的工人,都需要为 xxx 号工人提供一个原材料。

轩轩是 111 号工人。现在给出 qqq 张工单,第 iii 张工单表示编号为 aia_iai​的工人想生产一个第 LiL_iLi​ 阶段的零件。轩轩想知道对于每张工单,他是否需要给别人提供原材料。他知道聪明的你一定可以帮他计算出来!

输入

第一行三个正整数 nnn,mmm和 qqq,分别表示工人的数目、传送带的数目和工单的数目。

接下来 mmm 行,每行两个正整数 uuu 和 vvv,表示编号为 uuu 和 vvv 的工人之间存在一条零件传输带。保证 u≠vu \neq vu​=v
接下来 qqq 行,每行两个正整数 aaa和 LLL,表示编号为 aaa 的工人想生产一个第 LLL 阶段的零件。

输出

共 qqq 行,每行一个字符串 YesYesYes 或者 NoNoNo。如果按照第 iii 张工单生产,需要编号为 111 的轩轩提供原材料,则在第 iii 行输出 YesYesYes;否则在第 iii 行输出 NoNoNo。注意输出不含引号。

输入 #1
3 2 6
1 2
2 3
1 1
2 1
3 1
1 2
2 2
3 2
输入 #2
5 5 5
1 2
2 3
3 4
4 5
1 5
1 1
1 2
1 3
1 4
1 5
输出 #1
No
Yes
No
Yes
No
Yes
输出 #2 复制
No
Yes
No
Yes
Yes

样例解释

详情见洛谷

思路

假设
五个点,五条边

1 2
2 3
3 4
4 5
5 2

求五号做第一阶零件一号是否提供原材料————Yes
求五号做第二阶零件一号是否提供原材料————No
求五号做第三阶零件一号是否提供原材料————Yes
求五号做第四阶零件一号是否提供原材料————No

五号做第一、三阶零件一号需要提供原材料
而第二、四阶零件一号则不需要提供原材料
也就是奇数需要偶数不需要

求四号做第二阶零件一号是否提供原材料————Yes
求四号做第三阶零件一号是否提供原材料————No
求四号做第四阶零件一号是否提供原材料————Yes
求四号做第五阶零件一号是否提供原材料————No

四号做第二、四阶零件一号需要提供原材料
而第一、三阶零件一号则不需要提供原材料
也就是偶数需要奇数不需要

通过以上假设
我们很容易想到求出一号到各点的奇数最短路和偶数最短路

然后就是这么简单

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int x, y, n, m, t, ti;
int h[1000250];
struct whw
{int w, h;
}wh[1000250];
struct xy
{int l, r;//l为奇数最短路,r为偶数最短路
}F[1000250];
void hw(int x, int y)
{wh[++ti] = (whw){y, h[x]};h[x] = ti;}
void SPFA()
{memset(F, 0x3f3f, sizeof(F));F[1].r = 0;queue<int>sy;sy.push(1);while(sy.size()){x = sy.front();sy.pop();for(int i = h[x]; i; i = wh[i].h){int to = wh[i].w;int l = F[to].l, r = F[to].r;F[to].l = min(F[to].l, F[x].r + 1);//从上一个节点推出这个节点的最短路F[to].r = min(F[to].r, F[x].l + 1);if(F[to].l != l || F[to].r != r)sy.push(to);//如果有改变}}
}
int main()
{scanf("%d%d%d", &n, &m, &t);for(int i = 1; i <= m; ++i){scanf("%d%d", &x, &y);hw(x, y);hw(y, x);//建图}SPFA();for(int i = 1; i <= t; i++) {scanf("%d%d", &x, &y);if((y % 2 && F[x].l <= y) || (!(y % 2) && F[x].r <= y))printf("Yes\n");else printf("No\n");}return 0;
}

【CSP-J】【图论】【最短路】加工零件相关推荐

  1. bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集

    bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集 1.这道题我们主要就是要求出距离一个油站的最近的油站 首先我们dijkstra 求出任意一个点到 离他最近的油站的距离 2. ...

  2. 信息学奥赛一本通 1985:【19CSPJ普及组】加工零件 | 洛谷 P5663 [CSP-J2019] 加工零件

    [题目链接] ybt 1985:[19CSPJ普及组]加工零件 洛谷 P5663 [CSP-J2019] 加工零件 [题目考点] 图论 SPFA算法 [解题思路] 1. 问题分析 每个工人是一个顶点, ...

  3. [CSP-J 2019] 加工零件题解

    [CSP-J 2019] 加工零件 一.题目 题目描述 凯凯的工厂正在有条不紊地生产一种神奇的零件,神奇的零件的生产过程自然也很神奇.工厂里有 nnn 位工人,工人们从 1∼n1 \sim n1∼n ...

  4. 【2019CSP-J普及组】T4 加工零件

    P5663 加工零件 题目传送门 SPFA对于每个点是可多次出队入队的,so数组要开大些(检查40分钟 2个WA) 思路: 举个栗子: 7号工人做一个第5个阶段的零件,1号工人是否要做原材料? 可以看 ...

  5. 在数控机床上加工零件,主要取决于加工程序

    在数控机床上加工零件,主要取决于加工程序 数控机床的操作和监控全部在这个数控单元中完成,它是数控机床的大脑.与普通机床相比,数控机床有如下特点: 1.对加工对象的适应性强,适应模具等产品单件生产的特点 ...

  6. 【挑战程序设计】- 2.5 图论(最短路、最小生成树)

    2.5 图论(最短路.最小生成树) 文章目录 2.5 图论(最短路.最小生成树) 2.5.1 定义们 2.5.2 图的表示 2.5.3 图的搜索 2.5.4 最短路问题 单源1:bellman-for ...

  7. 【阿良的算法之路】图论最短路算法模板

    图论: [阿良的算法之路]图论最短路算法模板 [模板]dirjkstra单源最短路径 [模板]Bellman-Ford多源最短路 [模板]Spfa求最短路 [模板]Spfa判断负环 [模板]Floya ...

  8. 0x61.图论 - 最短路

    目录 单源最短路径 一.Dijkstra算法 1.常用的优先队列优化 2.更优的线段树优化 3.最强的zkw线段树优化 二.SPFA算法 三.分层图最短路 1.(二维分层图)AcWing 340. 通 ...

  9. CSP - J 2020 T1 优秀的拆分

    https://www.luogu.com.cn/problem/P7071 /* CSP - J 2020 T1 优秀的拆分 https://www.luogu.com.cn/problem/P70 ...

  10. 图论最短路:Bellman-Ford与其优化SPFA算法的一点理解

    文章目录 前言 一.对Bellman-Ford的深入理解 1. Bellman-Ford有什么用? 2. 什么是松弛操作? 3. Bellman-Ford的k次迭代意义? 4. 一个重要定理 5. 对 ...

最新文章

  1. 集成的分层强化学习,让人工智能在解决智能问题时表现得更聪明
  2. 2018 Multi-University Training Contest 7
  3. Hibernate和Mysql5.1以上版本创建表出错 type=InnDB
  4. webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server
  5. 2017年软件工程第七次作业-每周例行报告
  6. .NET程序在Linux容器中的演变
  7. 切点方法的事务参数的配置
  8. unable to launch什么意思_都表示太...以至于,so … that…?与too… to …有着明显区别...
  9. 图的顺序存储(邻接矩阵存储)【摘录自严长生老师的网站】
  10. java 输出三位数和n位数的每一位的数
  11. 红帽7.1安装Zabbix 3.4
  12. 中国塑料瓶市场趋势报告、技术动态创新及市场预测
  13. 用matlab模拟等离子体论文,等离子体模型的建立
  14. CUBA平台使用感想 - 架构师角度
  15. mysql的填充因子_数据库SQL Server – 索引 – 填充因子
  16. 良心,是黑暗里的一盏灯
  17. solid works定义样条曲线
  18. Oracle自动化测试工具OATS
  19. 计算机毕业生工作收入调查,大学毕业生收入调查:最高薪的工作是它
  20. 如何下载和安装mysql

热门文章

  1. Python常用配置文件ini、json、yaml读写总结
  2. windows下qt android开发
  3. [生存志] 第104节 吕览一字千金
  4. mysql 文本 挖掘_GitHub - cwff520/dianping_textmining: 大众点评评论文本挖掘,包括点评数据爬取、数据清洗入库、数据分析、评论情感分析等的完整挖掘项目...
  5. 电脑使用技巧提升篇9:使用360压缩软件文件加密
  6. 电机世界之直流有刷电机(科普文)
  7. 基于模型预测控制MPC的光伏并网系统设计|太阳能发电|模型预测控制
  8. SQL入门-连结(JOIN)
  9. 交换机芯片初创企业再获7700万美元融资
  10. The server time zone value ‘‘ is unrecognized or represents more than one time zone.