首页 > 试题广场 >

寻找道路

[编程题]寻找道路
  • 热度指数:61 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:
1.路径上的所有点的出边所指向的点都直接或间接与终点连通。
2.在满足条件1的情况下使路径最短。

注意:图G中可能存在重边和自环,题目保证终点没有出边。

请你输出符合条件的路径的长度。

输入描述:
第一行有两个用一个空格隔开的整数n和m,表示图有n个点和m条边。
接下来的m行每行2个整数x、y,之间用一个空格隔开,表示有一条边从点x指向点y。
最后一行有两个用一个空格隔开的整数s、t,表示起点为s,终点为t。


输出描述:
输出只有一行,包含一个整数,表示满足题目描述的最短路径的长度。如果这样的路径不存在,输出-1。
示例1

输入

3 2
1 2
2 1
1 3

输出

-1

说明

如上图所示,箭头表示有向道路,圆点表示城市。起点1与终点3不连通,所以满足题目描述的路径不存在,故输出-1。

示例2

输入

6 6
1 2
1 3
2 6
2 5
4 5
3 4
1 5

输出

3

说明

如上图所示,满足条件的路径为1->3->4->5。注意点2不能在答案路径中,因为点2连了一条边到点6,而点6不与终点5连通。


备注:
对于30%的数据,0< n≤10,0< m≤20;
对于60%的数据,0< n≤100,0< m≤2000;
对于100%的数据,0< n≤10,000,0< m≤200,000,0< x,y,s,t≤n,x≠t。
头像 苟且的狮子
发表于 2020-07-08 22:05:12
bfs、图 题意: 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:1.路径上的所有点的出边所指向的点都直接或间接与终点连通。2.在满足条件1的情况下使路径最短。注意:图G中可能存在重边和自环,题目保证终点没有出边。 请你输出符合条件的路径 展开全文
头像 savage
发表于 2019-09-01 17:37:53
题目描述 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所指向的点都直接 展开全文
头像 CH_cycyc
发表于 2025-01-16 08:13:21
链接:https://ac.nowcoder.com/acm/contest/23156/1005 来源:牛客网 题目描述 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 展开全文
头像 威风镰鼬
发表于 2021-06-09 20:53:20
[NOIP2014]寻找道路 思路 首先要把一些不满足条件的点剔除掉,然后就是求最短路的事情了。要找不满足条件的点,可以反向建边,然后从终点出发,标记每一个经过的点。那么剩下没有走过的点就可以去掉了。 代码 #include<bits/stdc++.h> using namespace 展开全文
头像 夜语声烦-
发表于 2023-02-26 21:32:02
#include <iostream> #include <cstring> #include <queue> using namespace std; const int N = 10010, M = 2e5 + 10; int n, m, s, t; i 展开全文
头像 LXNHB
发表于 2023-11-27 06:37:12
很有意思的一道题,这道题题目要求“路径上的所有点的出边所指向的点都直接或间接与终点连通”,怎么判断是否能到达重点呢,可以反向建边,没有访问到的点一定就是不与终点连接的点,然后将该点的所有临界点标记为false,意思是,该点的临接点不可直接或间接到达终点,再次bfs的时候就不需要再访问 #includ 展开全文
头像 ZZZYM
发表于 2022-02-20 17:47:42
寻找道路 思路 建两个图, 一个图是原图,一个图是将原图的边全部反向后的图,在反向图中以终点ed为起点进行bfs遍历,标记所有遍历到的点state[i]=true 在原图上进行bfsbfsbfs遍历,在原本bfs将点加入队列的条件的基础上,增加一个条件:如果一个点jjj的所有邻接点的statest 展开全文

问题信息

难度:
0条回答 4486浏览

热门推荐

通过挑战的用户

寻找道路