原题传送门

这道题嘛。。

首先根据题目,我们要先知道哪些点能够到达终点。(反向BFS)

然后我们再求最短路的途中,必须随时判断周围的点是否被第一次BFS标记过。、

所以再来一次BFS。

数组记得清零,不然会炸。。

下面贴代码

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,num=0,s,tt;
int q[20000];
int step[20000];
int head[10001];
bool vis[10001];
int a[200001],b[200001];
struct edge{int to,next;
}g[400001];
void ins(int u,int v)
{g[++num].next=head[u];head[u]=num;g[num].to=v;
}
void bfs1(int last){vis[last]=true;int h=1,t=1;q[h]=last;while(h<=t){int tmp=q[h];for(int i=head[tmp];i;i=g[i].next)if(!vis[g[i].to]){vis[g[i].to]=true;q[++t]=g[i].to;        }h++;    }
}
bool chubian(int q){for(int i=head[q];i;i=g[i].next)if(!vis[g[i].to]) return false;return true;
}
bool bfs2(int first){memset(q,0,sizeof(q));int h=1,t=1;q[h]=first;while(h<=t){int tmp=q[h++];if(!chubian(tmp))continue;for(int i=head[tmp];i;i=g[i].next)if(step[g[i].to]==0){step[g[i].to]=step[tmp]+1;if(g[i].to==tt){printf("%d\n",step[tt]);return true;}q[++t]=g[i].to;}}return false;
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d",&a[i],&b[i]);ins(b[i],a[i]);    }scanf("%d%d",&s,&tt);bfs1(tt);memset(head,0,sizeof(head));memset(g,0,sizeof(g));num=0;for(int i=1;i<=m;i++)ins(a[i],b[i]);if(!bfs2(s))printf("-1\n");
}

转载于:https://www.cnblogs.com/ghostfly233/p/6857098.html

寻找道路(NOIP2014)神奇之题。。相关推荐

  1. P2296 寻找道路

    P2296 寻找道路 题目描述 在有向图 \(G\) 中,每条边的长度均为 \(1\) ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直 ...

  2. 1807. [NOIP2014]寻找道路P2296 寻找道路

    题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  3. [NOIP2014] 寻找道路

    题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  4. NOIP2014 寻找道路

    题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  5. NOIP2014洛谷P2296:寻找道路(bfs)

    解析 杀鸡焉用AS47 做的巨差的一道题 WA3遍+写的巨麻烦+复杂度被吊打 qwq 说起来很玄学,但第一交之前就有一种强烈的预感觉得自己会WA 一开始像个傻子一样对有环图上记搜 WA了还不知道为啥- ...

  6. 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中

    题目名称 正确答案  序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...

  7. Luogu 2296 寻找道路

    https://www.luogu.org/problemnew/show/2296 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以 ...

  8. 洛谷 P2296 寻找道路

    感慨 周五比赛的测试题,结果到比赛结束也没有读懂题意...给的样例太少了,我一直以为我是不是spfa敲错了...没想到中间还有卡的地方 分析 题目中的一句耐人寻味的话"路径上的所有点的出边所 ...

  9. 洛谷2296 寻找道路

    题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:  1 .路径上的所有点的出边所指向的点都直接或间接与终点连通.  2 .在满 ...

  10. 2022年最新浙江道路运输安全员真题题库及答案

    百分百题库提供道路运输安全员考试试题.道路运输安全员考试预测题.道路运输安全员考试真题.道路运输安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关. 题干:根据<中华人民共和国 ...

最新文章

  1. python与c语言数据交互,python与c语言交互应用实例
  2. 阿里发布2019十大科技趋势,5G仍是主要生产力
  3. 【Servlet】ServletContext、ServletConfig对象学习、用户登录系统完善
  4. 用Docker构建LNMP环境(上)
  5. SAP Customer Data Cloud的Audit log设置
  6. Android loading进度条使用简单总结
  7. python界面设计模块_Python+Pycharm+PyQT5可视化程序设计入门
  8. ElementUI:路由界面刷新后导航栏仍显示default-active不跟随路由变化
  9. 软考-中级软件设计师电子资料合集
  10. android 微信 语音转文字,微信语音转文字功能
  11. 电视和计算机共享视频,电脑中的图片视频一键共享到电视上去看
  12. 微信小程序之 收藏功能
  13. 华为USG防火墙搭建IPsec***实战
  14. 层次化网络设计(三层网络结构)
  15. 决赛巅峰之战落幕,第二届翼支付杯大数据建模大赛完美收官
  16. PS技巧一-----镜头光晕
  17. CG Tools 工具收集
  18. 华为研究院19级研究员几年心得终成趣谈网络协议文档,附讲解
  19. 【编程竞赛】【CSDN竞赛第37期】
  20. Centos7 编译安装git 报错 git-compat-util.h:14:2: error

热门文章

  1. 可调稳压电源lm317实验报告_可调直流稳压电源实验报告 -
  2. layui iframe弹出层高度自适应,并垂直居中
  3. 关于Java工具eclipse的基本
  4. requests.exceptions.ConnectionError: HTTPConnectionPool(host=‘****, port=80): Max retries exceeded w
  5. 连接计算机硬盘usb,使用移动硬盘时电脑显示:“如果您将此USB设备连接到高速USB2.0端口,可以提升其性能”...
  6. php怎么将农历转换成公历,农历公历转换器,公历农历转换
  7. mysql将公历农历转换_SQL 日期转换(阳历转阴历)
  8. 数字麦克风PDM信号采集与STM32 I2S接口应用(三)
  9. 关于Name和Caption属性的理解
  10. OpenEuler上构建LFS8.4