问题 B: 【NOIP2014tg_Day2】寻找道路

传统题
1.000s 时间限制
128MB 内存限制
2 提交
2 解决

【题目描述】
2.寻找道路 (road.cpp/c/pas) 【问题述】 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所指向的点都直接或间接与终点连通。 2.在满足条件1的情况下使路径最短。 注意:图G中可能存在重边和自环,题目保证终点没有出边。 请你输出符合条件的路径的长度。   【输入】 输入文件名为road.in 第一行有两个用一个空格隔开的整数nm,表示图有n个点和m条边。 接下来的m行每行2个整数xy,之间用一个空格隔开,表示有一条边从点x指向点y 最后一行有两个用一个空格隔开的整数st,表示起点为s,终点为t   【输出】 输出文件名为road.out 输出只有一行,包含一个整数,表示满足题目述的最短路径的长度。如果这样的路径不存在,输出-1   【输入输出样例1
road.in road.out
3 2 1 2 2 1 1 3 1
    【输入输出样例说明】
如上图所示,箭头表示有向道路,圆点表示城市。起点1与终点3不连通,所以满足题目述的路径不存在,故输出-1   【输入输出样例2
road.in road.out
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 100< m 20 对于60%的数据,0< n 1000< m 2000 对于100%的数据,0< n 10,0000< m 200,0000< x,y,s,tnxt  

题目类型~

NOIP提高组-NOIP2014