• 寻找道路


    原题链接:https://www.luogu.org/problem/show?pid=2296#sub

    *已更新

    思路具体还是有的,不过代码出现了一些bug,我正在调试。

    题目给了一个有向图,让我们在图中找一条从起点到终点的路径,该路径满足两个条件:

    1.路径上的所有点的出边所指向的点都直接或间接与终点连通。

    2.在满足条件1的情况下使路径最短。

    要判定某个点是不是满足条件1,从正向进行广搜肯定是不太合理的,因为没办法判定。有一种方法是反向建图和搜索,搜索完之后再去枚举所有边,把不合适的删去,然后就是一个bfs裸图。

    我用的方法和这个不太一样,不过这好像时间爆炸。。如果用dfs空间也爆炸。。

    我们可以在读入的时候记录所有入度为0的点,读入完毕建立完图后,枚举这所有的入度为0的非起点的点,从这个点出发能到的非终点的点全打一个标记,然后进行bfs,只要在走的时候加个判定不走那个位置就好。

    因为路径长度都是1,所以可以不写spfa,bfs时发现连接点是终点时直接输出就好,无解输出-1.

    估计是更不完了。。。。。

    我后来想了想,我那个方法是错的。

    还是得先反向建图,找到所有可能到达的点,那些不能到达的点,其相连的点便一定不能走。所以这一遍bfs执行完毕后,正向建图,跑最短路的时候加一个判断,即判断这个点所连接的所有点是不是都能走,如果不能的话这个点是不能走的。其余的操作和正常求最短路的方法是类似的。

  • 相关阅读:
    第九周
    第七周.
    第六周.
    第二次作业
    第九周作业
    第八周作业
    第七周作业
    第六周作业
    第五周作业
    统计一行文本的单词个数
  • 原文地址:https://www.cnblogs.com/OIerShawnZhou/p/7594576.html
Copyright © 2020-2023  润新知