这个题据我所知有两种比较优秀的做法.
第一种是
\(DP\)统计每个点的路径数,然后找出必经点,再从必经点开始
\(bfs\)堵路.
第二种比较简单,你先
\(bfs\)一遍,如果不连通,直接输出
\(0\),否则,找到任意一条路径(可以发现,一定是最短路)堵死.
然后重复这个过程,进行了几次
\(bfs\)就需要至少几个障碍来堵路.
这其实有点类似于网络流最大流算法
\(Dinic\)中的每次走一条阻塞流.
正确性,从终点的两个来路考虑即可.
\(Code:\) #include #include #include #include #include #include #include #include #include #include #include