|
|
|
@ -17,6 +17,16 @@ void floyd() {
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 三、最短路+思维
|
|
|
|
|
|
|
|
|
|
#### [$AcWing$ $1125$ 牛的旅行](https://www.cnblogs.com/littlehb/p/16025700.html)
|
|
|
|
|
|
|
|
|
|
总结:
|
|
|
|
|
- 一遍$floyd$算出原始各连通块内的多源最短路径
|
|
|
|
|
- 遍历枚举找出每个点在自己连通块中可以到达的最远距离,$PK$后获取到原始的最大直径长度
|
|
|
|
|
- 遍历所有可能连接上的两个不在同一连通块中的点,尝试连接上这两个点后,得到可以获得到的最小直径。
|
|
|
|
|
- 原始直径与遍历尝试的所有可能直径$PK$,谁大谁是答案。
|
|
|
|
|
|
|
|
|
|
### 三、判负环
|
|
|
|
|
|
|
|
|
|
眼尖的人儿可能发现邻接矩阵 $g$ 中, $g[i][i]$并没有赋初值$0$,而是 $inf$。并且计算后 $g[i][i]$的值也不是 $0$,而是 $g[i][i]=g[i][u]+……+g[v][i]$,即从外面绕一圈回来的最短路径,而这正 **用于判断负圈**,即 $g[i][i]<0$。
|
|
|
|
|