最小环
最小环
在一个图中,求一个由不少于3个点构成的最小环
无向图
求环的长度就是求两点加上中间任意一个松弛点的距离和,即\(dis[i][j]+val[i][k]+val[k][j]\),要得到\(dis[i][j]\),可以使用最短路算法求解
由于要保证\(dis[i][j]\)经过的点集中一定不含有k,可以利用floyd算法的特性,在大循环内先找环再松弛,由于每次松弛后得到的最短路中才含有k,这个环一定是合法的
还有一种方法是利用dijkstra算法来的,枚举每一条边,再分别求两个端点的最短路,这个方法适用于求指定点/边的最小环
有向图
有向图在此并没有什么本质区别,连边的时候改一下就可以了